aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make')
-rw-r--r--vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/portfile.cmake44
-rwxr-xr-xvcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-cl_cpp_wrapper/configure6
-rw-r--r--vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-cl_cpp_wrapper/source.c5
-rw-r--r--vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-scripts-cl_cpp_wrapper.cmake25
-rw-r--r--vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-vcpkg-make-cl_cpp_wrapper.cmake33
-rw-r--r--vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_adapt_lib_link_names.cmake55
-rw-r--r--vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_determine_host_arch.cmake19
-rw-r--r--vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_determine_target_arch.cmake15
-rw-r--r--vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_determine_target_triplet.cmake31
-rw-r--r--vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_get_configure_triplets.cmake94
-rw-r--r--vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_get_crosscompiling.cmake53
-rw-r--r--vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_normalize_arch.cmake28
-rw-r--r--vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_prepare_compile_flags.cmake99
-rw-r--r--vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/vcpkg.json65
14 files changed, 572 insertions, 0 deletions
diff --git a/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/portfile.cmake b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/portfile.cmake
new file mode 100644
index 0000000..3795fc8
--- /dev/null
+++ b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/portfile.cmake
@@ -0,0 +1,44 @@
+set(VCPKG_POLICY_EMPTY_PACKAGE enabled)
+include("${CURRENT_HOST_INSTALLED_DIR}/share/unit-test-cmake/test-macros.cmake")
+
+if("scripts-cl-cpp-wrapper" IN_LIST FEATURES)
+ include("${CMAKE_CURRENT_LIST_DIR}/test-scripts-cl_cpp_wrapper.cmake")
+endif()
+
+if("vcpkg-make-cl-cpp-wrapper" IN_LIST FEATURES)
+ include("${CMAKE_CURRENT_LIST_DIR}/test-vcpkg-make-cl_cpp_wrapper.cmake")
+endif()
+
+if("z-vcpkg-make-prepare-compile-flags" IN_LIST FEATURES)
+ include("${CMAKE_CURRENT_LIST_DIR}/test-z_vcpkg_make_prepare_compile_flags.cmake")
+endif()
+
+if("z-vcpkg-make-normalize-arch" IN_LIST FEATURES)
+ include("${CMAKE_CURRENT_LIST_DIR}/test-z_vcpkg_make_normalize_arch.cmake")
+endif()
+
+if("z-vcpkg-make-determine-host-arch" IN_LIST FEATURES)
+ include("${CMAKE_CURRENT_LIST_DIR}/test-z_vcpkg_make_determine_host_arch.cmake")
+endif()
+
+if("z-vcpkg-make-determine-target-arch" IN_LIST FEATURES)
+ include("${CMAKE_CURRENT_LIST_DIR}/test-z_vcpkg_make_determine_target_arch.cmake")
+endif()
+
+if("z-vcpkg-make-determine-target-triplet" IN_LIST FEATURES)
+ include("${CMAKE_CURRENT_LIST_DIR}/test-z_vcpkg_make_determine_target_triplet.cmake")
+endif()
+
+if("z-vcpkg-make-z-adapt-lib-link-names" IN_LIST FEATURES)
+ include("${CMAKE_CURRENT_LIST_DIR}/test-z_adapt_lib_link_names.cmake")
+endif()
+
+if("z-vcpkg-make-get-configure-triplets" IN_LIST FEATURES)
+ include("${CMAKE_CURRENT_LIST_DIR}/test-z_vcpkg_make_get_configure_triplets.cmake")
+endif()
+
+if("z-vcpkg-make-get-crosscompiling" IN_LIST FEATURES)
+ include("${CMAKE_CURRENT_LIST_DIR}/test-z_vcpkg_make_get_crosscompiling.cmake")
+endif()
+
+unit_test_report_result()
diff --git a/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-cl_cpp_wrapper/configure b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-cl_cpp_wrapper/configure
new file mode 100755
index 0000000..90f66c8
--- /dev/null
+++ b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-cl_cpp_wrapper/configure
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+echo "${CPP:-cpp} ${CPPFLAGS} ${CFLAGS} ${TEST_FLAGS} > stdout.c < source.c" || exit 1
+${CPP:-cpp} ${CPPFLAGS} ${CFLAGS} ${TEST_FLAGS} > stdout.c < source.c || exit 2
+grep OOPS_ECHOED_INVOCATION stdout.c && exit 3
+exit 0
diff --git a/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-cl_cpp_wrapper/source.c b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-cl_cpp_wrapper/source.c
new file mode 100644
index 0000000..5d70292
--- /dev/null
+++ b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-cl_cpp_wrapper/source.c
@@ -0,0 +1,5 @@
+#ifdef EXPECT_SUCCESS
+/* okay */
+#else
+#error "Forced error"
+#endif
diff --git a/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-scripts-cl_cpp_wrapper.cmake b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-scripts-cl_cpp_wrapper.cmake
new file mode 100644
index 0000000..67d8b70
--- /dev/null
+++ b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-scripts-cl_cpp_wrapper.cmake
@@ -0,0 +1,25 @@
+block()
+set(SOURCE_PATH "${CURRENT_PORT_DIR}/test-cl_cpp_wrapper")
+set(VCPKG_BUILD_TYPE release)
+
+vcpkg_backup_env_variables(VARS CPP TEST_FLAGS)
+
+# Test that that CPP processes stdin
+# vcpkg_configure_make picks scripts/buildsystems/make_wrapper/cl_cpp_wrapper
+
+if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW)
+ set(ENV{CPP} "cl_cpp_wrapper")
+endif()
+
+unit_test_ensure_fatal_error([[
+ set(ENV{TEST_FLAGS} -DEXPECT_FAILURE)
+ vcpkg_configure_make(SOURCE_PATH "${SOURCE_PATH}" COPY_SOURCE USE_WRAPPERS)
+]])
+
+unit_test_ensure_success([[
+ set(ENV{TEST_FLAGS} -DEXPECT_SUCCESS)
+ vcpkg_configure_make(SOURCE_PATH "${SOURCE_PATH}" COPY_SOURCE USE_WRAPPERS)
+]])
+
+vcpkg_restore_env_variables(VARS CPP TEST_FLAGS)
+endblock()
diff --git a/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-vcpkg-make-cl_cpp_wrapper.cmake b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-vcpkg-make-cl_cpp_wrapper.cmake
new file mode 100644
index 0000000..b7a15ff
--- /dev/null
+++ b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-vcpkg-make-cl_cpp_wrapper.cmake
@@ -0,0 +1,33 @@
+block()
+set(SOURCE_PATH "${CURRENT_PORT_DIR}/test-cl_cpp_wrapper")
+set(VCPKG_BUILD_TYPE release)
+
+vcpkg_backup_env_variables(VARS CPP TEST_FLAGS)
+
+# Test that that CPP processes stdin
+# vcpkg_make_configure picks (installed) ports/vcpkg-make/wrappers/cl_cpp_wrapper
+
+if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW)
+ set(ENV{CPP} "cl_cpp_wrapper")
+endif()
+
+unit_test_ensure_fatal_error([[
+ set(ENV{TEST_FLAGS} -DEXPECT_FAILURE)
+ vcpkg_make_configure(SOURCE_PATH "${SOURCE_PATH}" COPY_SOURCE)
+]])
+
+unit_test_ensure_success([[
+ set(ENV{TEST_FLAGS} -DEXPECT_SUCCESS)
+ vcpkg_make_configure(SOURCE_PATH "${SOURCE_PATH}" COPY_SOURCE)
+]])
+
+# In verbose mode (V=1), the command line is echoed.
+# This is is diagnostic output and must not go to stdout.
+unit_test_ensure_success([[
+ set(ENV{TEST_FLAGS} "-DEXPECT_SUCCESS -DOOPS_ECHOED_INVOCATION")
+ set(ENV{V} 1)
+ vcpkg_make_configure(SOURCE_PATH "${SOURCE_PATH}" COPY_SOURCE)
+]])
+
+vcpkg_restore_env_variables(VARS CPP TEST_FLAGS)
+endblock()
diff --git a/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_adapt_lib_link_names.cmake b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_adapt_lib_link_names.cmake
new file mode 100644
index 0000000..4d38ae4
--- /dev/null
+++ b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_adapt_lib_link_names.cmake
@@ -0,0 +1,55 @@
+block(SCOPE_FOR VARIABLES)
+
+# Test 1: Basic Transformation
+set(all_libs_list "libexample.dll;libutil.a;libutil2.lib;libutil3.so")
+set(expected "-llibexample.dll;-llibutil;-llibutil2;-llibutil3")
+set(VCPKG_TARGET_IS_WINDOWS FALSE)
+set(VCPKG_TARGET_IS_MINGW FALSE)
+set(VCPKG_LIBRARY_LINKAGE "static")
+
+unit_test_check_variable_equal(
+ [[ z_vcpkg_make_prepare_link_flags(IN_OUT_VAR all_libs_list VCPKG_TRANSFORM_LIBS) ]]
+ all_libs_list
+ "${expected}"
+)
+
+# Test 2: Remove uuid on Windows
+set(all_libs_list "libexample.dll;uuid.lib")
+set(expected "-llibexample.dll")
+set(VCPKG_TARGET_IS_WINDOWS TRUE)
+set(VCPKG_TARGET_IS_MINGW FALSE)
+set(VCPKG_LIBRARY_LINKAGE "static")
+
+unit_test_check_variable_equal(
+ [[ z_vcpkg_make_prepare_link_flags(IN_OUT_VAR all_libs_list VCPKG_TRANSFORM_LIBS) ]]
+ all_libs_list
+ "${expected}"
+)
+
+# Test 3: MinGW Dynamic Linkage Handling
+set(all_libs_list "libexample.so;uuid.a")
+set(expected "-llibexample;-Wl,-Bstatic,-luuid,-Bdynamic")
+set(VCPKG_TARGET_IS_WINDOWS FALSE)
+set(VCPKG_TARGET_IS_MINGW TRUE)
+set(VCPKG_LIBRARY_LINKAGE "dynamic")
+
+unit_test_check_variable_equal(
+ [[ z_vcpkg_make_prepare_link_flags(IN_OUT_VAR all_libs_list VCPKG_TRANSFORM_LIBS) ]]
+ all_libs_list
+ "${expected}"
+)
+
+# Test 4: No Transformation Flag
+set(all_libs_list "libexample.dll;uuid.lib")
+set(expected "libexample.dll;uuid.lib")
+set(VCPKG_TARGET_IS_WINDOWS FALSE)
+set(VCPKG_TARGET_IS_MINGW FALSE)
+set(VCPKG_LIBRARY_LINKAGE "static")
+
+unit_test_check_variable_equal(
+ [[ z_vcpkg_make_prepare_link_flags(IN_OUT_VAR all_libs_list) ]]
+ all_libs_list
+ "${expected}"
+)
+
+endblock()
diff --git a/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_determine_host_arch.cmake b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_determine_host_arch.cmake
new file mode 100644
index 0000000..73e76db
--- /dev/null
+++ b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_determine_host_arch.cmake
@@ -0,0 +1,19 @@
+vcpkg_backup_env_variables(VARS PROCESSOR_ARCHITECTURE PROCESSOR_ARCHITEW6432)
+
+set(result_arch "NOTFOUND")
+
+# Test Case 1: x86_64 Architecture (Windows)
+set(ENV{PROCESSOR_ARCHITECTURE} "AMD64")
+unit_test_check_variable_equal(
+ [[ z_vcpkg_make_determine_host_arch(result_arch) ]]
+ result_arch "x86_64"
+)
+
+# Test Case 2: i686 Architecture (Windows)
+set(ENV{PROCESSOR_ARCHITEW6432} "x86")
+unit_test_check_variable_equal(
+ [[ z_vcpkg_make_determine_host_arch(result_arch) ]]
+ result_arch "i686"
+)
+
+vcpkg_restore_env_variables(VARS PROCESSOR_ARCHITECTURE PROCESSOR_ARCHITEW6432)
diff --git a/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_determine_target_arch.cmake b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_determine_target_arch.cmake
new file mode 100644
index 0000000..c82221c
--- /dev/null
+++ b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_determine_target_arch.cmake
@@ -0,0 +1,15 @@
+# Test Case 1: Single Target Architecture
+set(VCPKG_TARGET_ARCHITECTURE "x86_64")
+set(VCPKG_OSX_ARCHITECTURES "x86_64") # Empty for non-OSX
+set(result_arch)
+z_vcpkg_make_determine_target_arch(result_arch)
+unit_test_check_variable_equal([[]] result_arch "x86_64")
+
+# Test Case 2: Universal Architecture (OSX)
+if (VCPKG_HOST_IS_OSX)
+ set(VCPKG_TARGET_ARCHITECTURE "x86_64")
+ set(VCPKG_OSX_ARCHITECTURES "x86_64;arm64")
+ set(result_arch)
+ z_vcpkg_make_determine_target_arch(result_arch)
+ unit_test_check_variable_equal([[]] result_arch "universal")
+endif()
diff --git a/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_determine_target_triplet.cmake b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_determine_target_triplet.cmake
new file mode 100644
index 0000000..f1eeff0
--- /dev/null
+++ b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_determine_target_triplet.cmake
@@ -0,0 +1,31 @@
+if(VCPKG_TARGET_IS_ANDROID)
+ # tbd
+
+elseif(VCPKG_TARGET_IS_LINUX)
+ unit_test_check_variable_equal(
+ [[ z_vcpkg_make_determine_target_triplet(triplet COMPILER_NAME "cc") ]]
+ triplet ""
+ )
+ unit_test_check_variable_equal(
+ [[ z_vcpkg_make_determine_target_triplet(triplet COMPILER_NAME "aarch64-linux-gnu-gcc") ]]
+ triplet "aarch64-linux-gnu"
+ )
+ unit_test_check_variable_equal(
+ [[ z_vcpkg_make_determine_target_triplet(triplet COMPILER_NAME "i686-linux-gnu-clang") ]]
+ triplet "i686-linux-gnu"
+ )
+ unit_test_check_variable_equal(
+ [[ z_vcpkg_make_determine_target_triplet(triplet COMPILER_NAME "x86_64-linux-gnu-gcc-13") ]]
+ triplet "x86_64-linux-gnu"
+ )
+
+elseif(VPCKG_TARGET_IS_OSX)
+ # tbd
+
+elseif(VCPKG_TARGET_IS_UWP)
+ # tbd
+
+elseif(VCPKG_TARGET_IS_WINDOWS)
+ # tbd
+
+endif()
diff --git a/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_get_configure_triplets.cmake b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_get_configure_triplets.cmake
new file mode 100644
index 0000000..df525da
--- /dev/null
+++ b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_get_configure_triplets.cmake
@@ -0,0 +1,94 @@
+z_vcpkg_make_get_configure_triplets(triplets)
+
+# Either none or both of --host, --build
+if(triplets MATCHES "--host|--build")
+ unit_test_check_variable_not_equal(
+ [[ string(REGEX MATCH "--host=([^;]+)" actual "${triplets}") ]]
+ CMAKE_MATCH_1 ""
+ )
+ unit_test_check_variable_not_equal(
+ [[ string(REGEX MATCH "--build=([^;]+)" actual "${triplets}") ]]
+ CMAKE_MATCH_1 ""
+ )
+endif()
+
+# Get the actual --build option, for use in the following tests.
+block(SCOPE_FOR VARIABLES PROPAGATE build_opt)
+ if(triplets STREQUAL "")
+ # Initially empty triplets are okay (= native build).
+ # Force non-empty triplets via explicit --host.
+ set(VCPKG_MAKE_BUILD_TRIPLET "--host=vcpkg")
+ z_vcpkg_make_get_configure_triplets(triplets)
+ endif()
+ string(REGEX MATCH "--host=[^;]*" host_opt "${triplets};")
+ unit_test_check_variable_not_equal(
+ [[ # match --host ]]
+ host_opt ""
+ )
+ string(REGEX MATCH "--build=[^;]*" build_opt "${triplets};")
+ unit_test_check_variable_not_equal(
+ [[ # match --build ]]
+ build_opt ""
+ )
+endblock()
+
+# --host precedence: VCPKG_MAKE_BUILD_TRIPLET, COMPILER_NAME, hard-coded
+if(VCPKG_MAKE_BUILD_TRIPLET MATCHES "--host=([^;]*)")
+ set(expected "${CMAKE_MATCH_1}")
+ z_vcpkg_make_get_configure_triplets(output COMPILER_NAME "x86_64-linux-gnu-clang-12")
+ unit_test_check_variable_equal(
+ [[ string(REGEX MATCH "--host=([^;]*)" actual "${output}") ]]
+ CMAKE_MATCH_1 "${expected}"
+ )
+elseif(VCPKG_TARGET_IS_ANDROID)
+ unit_test_check_variable_equal(
+ [[ string(REGEX MATCH "--host=[^;]*-([^-;]*-(android|[^-;]*))" output "${triplets}") ]]
+ CMAKE_MATCH_1 "linux-android"
+ )
+ unit_test_check_variable_equal(
+ [[ z_vcpkg_make_get_configure_triplets(actual COMPILER_NAME "/bin/armv7a-linux-androideabi28-clang") ]]
+ actual "--host=armv7a-linux-androideabi28;${build_opt}"
+ )
+elseif(VCPKG_TARGET_IS_MINGW)
+ unit_test_check_variable_equal(
+ [[ string(REGEX MATCH "--host=[^;]*-(mingw32|[^-;]*)" output "${triplets}") ]]
+ CMAKE_MATCH_1 "mingw32"
+ )
+elseif(VCPKG_TARGET_IS_LINUX)
+ unit_test_check_variable_equal(
+ [[ z_vcpkg_make_get_configure_triplets(actual COMPILER_NAME "gcc") ]]
+ actual ""
+ )
+ unit_test_check_variable_equal(
+ [[ z_vcpkg_make_get_configure_triplets(actual COMPILER_NAME "/bin/aarch64-linux-gnu-gcc-13") ]]
+ actual "--host=aarch64-linux-gnu;${build_opt}"
+ )
+ unit_test_check_variable_equal(
+ [[ z_vcpkg_make_get_configure_triplets(actual COMPILER_NAME "/usr/bin/x86_64-linux-gnu-clang-12") ]]
+ actual "--host=x86_64-linux-gnu;${build_opt}"
+ )
+elseif(VCPKG_TARGET_IS_UWP)
+ unit_test_check_variable_equal(
+ [[ string(REGEX MATCH "--host=[^;]*-([^-;]*-[^-;]*)" output "${triplets}") ]]
+ CMAKE_MATCH_1 "unknown-mingw32"
+ )
+elseif(VCPKG_TARGET_IS_WINDOWS)
+ unit_test_check_variable_equal(
+ [[ string(REGEX MATCH "--host=[^;]*-([^-;]*-[^-;]*)" output "${triplets}") ]]
+ CMAKE_MATCH_1 "pc-mingw32"
+ )
+endif()
+
+# VCPKG_MAKE_BUILD_TRIPLET robustness
+block(SCOPE_FOR VARIABLES)
+ set(VCPKG_MAKE_BUILD_TRIPLET "--host=HHH;--build=BBB")
+ unit_test_check_variable_equal(
+ [[ z_vcpkg_make_get_configure_triplets(actual) ]]
+ actual "--host=HHH;--build=BBB"
+ )
+ set(VCPKG_MAKE_BUILD_TRIPLET "--build=bbb;--host=hhh")
+ unit_test_check_variable_equal(
+ [[ z_vcpkg_make_get_configure_triplets(actual) ]]
+ actual "--build=bbb;--host=hhh"
+ )
+endblock()
diff --git a/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_get_crosscompiling.cmake b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_get_crosscompiling.cmake
new file mode 100644
index 0000000..47148b8
--- /dev/null
+++ b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_get_crosscompiling.cmake
@@ -0,0 +1,53 @@
+# Named expected values
+string(COMPARE NOTEQUAL "host" "build" crosscompiling)
+string(COMPARE EQUAL "host" "build" native)
+
+unit_test_check_variable_equal(
+ [[ z_vcpkg_make_get_crosscompiling(result) ]]
+ result "${native}"
+)
+
+unit_test_check_variable_equal(
+ [[ z_vcpkg_make_get_crosscompiling(result --host=BBB --build=BBB) ]]
+ result "${native}"
+)
+
+unit_test_check_variable_equal(
+ [[ z_vcpkg_make_get_crosscompiling(result --build=HHH --host=HHH) ]]
+ result "${native}"
+)
+
+unit_test_check_variable_equal(
+ [[ z_vcpkg_make_get_crosscompiling(result --host=HHH --build=BBB) ]]
+ result "${crosscompiling}"
+)
+
+# arguable, but without --build it leads to cross_compiling=maybe.
+unit_test_check_variable_equal(
+ [[ z_vcpkg_make_get_crosscompiling(result --host=HHH) ]]
+ result "${crosscompiling}"
+)
+
+# arguable, but without --host it leads to cross_compiling=maybe.
+unit_test_check_variable_equal(
+ [[ z_vcpkg_make_get_crosscompiling(result --build=BBB) ]]
+ result "${crosscompiling}"
+)
+
+unit_test_check_variable_equal(
+ [[ z_vcpkg_make_get_crosscompiling(result --host=HHH --build=BBB) ]]
+ result "${crosscompiling}"
+)
+
+unit_test_check_variable_equal(
+ [[ z_vcpkg_make_get_crosscompiling(result --build=BBB --host=HHH) ]]
+ result "${crosscompiling}"
+)
+
+if(NOT VCPKG_CROSSCOMPILING)
+ z_vcpkg_make_get_configure_triplets(configure_triplets)
+ unit_test_check_variable_equal(
+ [[ z_vcpkg_make_get_crosscompiling(result ${configure_triplets}) ]]
+ result "${native}"
+ )
+endif()
diff --git a/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_normalize_arch.cmake b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_normalize_arch.cmake
new file mode 100644
index 0000000..fdfe384
--- /dev/null
+++ b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_normalize_arch.cmake
@@ -0,0 +1,28 @@
+set(test_cases
+ "amd64" "x86_64"
+ "AMD64" "x86_64"
+ "x64" "x86_64"
+ "x86" "i686"
+ "X86" "i686"
+ "ARM64" "aarch64"
+ "arm64" "aarch64"
+ "ARM" "arm"
+ "arm" "arm"
+ "x86_64" "x86_64"
+ "i686" "i686"
+ "aarch64" "aarch64"
+)
+
+list(LENGTH test_cases num_items)
+math(EXPR num_tests "${num_items} / 2 - 1")
+
+foreach(idx RANGE 0 ${num_tests})
+ math(EXPR input_idx "${idx} * 2")
+ math(EXPR output_idx "${idx} * 2 + 1")
+ list(GET test_cases ${input_idx} input)
+ list(GET test_cases ${output_idx} expected)
+
+ set(result_arch)
+ z_vcpkg_make_normalize_arch(result_arch ${input})
+ unit_test_check_variable_equal([[]] result_arch "${expected}")
+endforeach()
diff --git a/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_prepare_compile_flags.cmake b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_prepare_compile_flags.cmake
new file mode 100644
index 0000000..89743b8
--- /dev/null
+++ b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/test-z_vcpkg_make_prepare_compile_flags.cmake
@@ -0,0 +1,99 @@
+set(VCPKG_COMBINED_C_FLAGS_Release "-O2 -DNDEBUG")
+set(VCPKG_COMBINED_CXX_FLAGS_Release "-O2 -DNDEBUG")
+set(VCPKG_COMBINED_C_FLAGS_Debug "-g -O0 -DDEBUG")
+set(VCPKG_COMBINED_CXX_FLAGS_Debug "-g -O0 -DDEBUG")
+set(VCPKG_COMBINED_SHARED_LINKER_FLAGS_Release "-L/mylibpath")
+set(VCPKG_COMBINED_SHARED_LINKER_FLAGS_Debug "-L/debuglibpath")
+set(CURRENT_INSTALLED_DIR "C:/vcpkg_installed/x64-windows")
+
+# Test Case: Release Flag Generation
+set(flags_out)
+z_vcpkg_make_prepare_compile_flags(
+ COMPILER_FRONTEND "MSVC"
+ CONFIG "Release"
+ FLAGS_OUT flags_out
+ LANGUAGES "C" "CXX"
+)
+
+set(expected_cflags "-Xcompiler -O2 -Xcompiler -DNDEBUG")
+set(expected_cxxflags "-Xcompiler -O2 -Xcompiler -DNDEBUG")
+set(expected_ldflags "-Xlinker -Xlinker -Xlinker -L/mylibpath")
+
+unit_test_check_variable_equal([[]] CFLAGS_Release "${expected_cflags}")
+unit_test_check_variable_equal([[]] CXXFLAGS_Release "${expected_cxxflags}")
+unit_test_check_variable_equal([[]] LDFLAGS_Release "${expected_ldflags}")
+
+
+# Test Case: Debug flag generation
+set(flags_out)
+z_vcpkg_make_prepare_compile_flags(
+ COMPILER_FRONTEND "MSVC"
+ CONFIG "Debug"
+ FLAGS_OUT flags_out
+ LANGUAGES "C" "CXX"
+)
+
+# Expected Debug flags
+set(expected_cflags "-Xcompiler -g -Xcompiler -O0 -Xcompiler -DDEBUG")
+set(expected_cxxflags "-Xcompiler -g -Xcompiler -O0 -Xcompiler -DDEBUG")
+set(expected_ldflags "-Xlinker -Xlinker -Xlinker -L/debuglibpath")
+
+# Check the values of the Debug flags
+unit_test_check_variable_equal([[]] CFLAGS_Debug "${expected_cflags}")
+unit_test_check_variable_equal([[]] CXXFLAGS_Debug "${expected_cxxflags}")
+unit_test_check_variable_equal([[]] LDFLAGS_Debug "${expected_ldflags}")
+
+# Test Case: NO_FLAG_ESCAPING (MSVC, Debug)
+set(flags_out)
+unset(CFLAGS_Debug)
+unset(CXXFLAGS_Debug)
+unset(LDFLAGS_Debug)
+z_vcpkg_make_prepare_compile_flags(
+ NO_FLAG_ESCAPING
+ COMPILER_FRONTEND "MSVC"
+ CONFIG "Debug"
+ FLAGS_OUT flags_out
+ LANGUAGES "C" "CXX"
+)
+
+set(expected_cflags "-g -O0 -DDEBUG")
+set(expected_cxxflags "-g -O0 -DDEBUG")
+set(expected_ldflags "-L/debuglibpath")
+
+unit_test_check_variable_equal([[]] CFLAGS_Debug "${expected_cflags}")
+unit_test_check_variable_equal([[]] CXXFLAGS_Debug "${expected_cxxflags}")
+unit_test_check_variable_equal([[]] LDFLAGS_Debug "${expected_ldflags}")
+
+# Test Case: Different Languages and Compiler Frontend (GCC)
+set(flags_out)
+z_vcpkg_make_prepare_compile_flags(
+ COMPILER_FRONTEND "GCC"
+ CONFIG "Release"
+ FLAGS_OUT flags_out
+ LANGUAGES "C" "CXX" "ASM"
+)
+
+unit_test_check_variable_unset([[]] "${ASMFLAGS_Release}")
+set(expected_gcc_cflags "-O2 -DNDEBUG")
+unit_test_check_variable_equal([[]] expected_gcc_cflags "${CFLAGS_Release}")
+
+# Test Case: No Languages Defined (Should Default to C;CXX)
+set(flags_out)
+unset(CFLAGS_Release)
+unset(CXXFLAGS_Release)
+unset(LDFLAGS_Release)
+unset(ASMFLAGS_Release)
+z_vcpkg_make_prepare_compile_flags(
+ COMPILER_FRONTEND "MSVC"
+ CONFIG "Release"
+ FLAGS_OUT flags_out
+)
+
+# Verify that both CFLAGS and CXXFLAGS are set since they should default to C and C++
+if(NOT CFLAGS_Release)
+ message(FATAL_ERROR "CFLAGS_Release not set")
+endif()
+
+if(NOT CXXFLAGS_Release)
+ message(FATAL_ERROR "CXXFLAGS_Release not set")
+endif() \ No newline at end of file
diff --git a/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/vcpkg.json b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/vcpkg.json
new file mode 100644
index 0000000..ecd76d4
--- /dev/null
+++ b/vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make/vcpkg.json
@@ -0,0 +1,65 @@
+{
+ "name": "vcpkg-ci-vcpkg-make",
+ "version-string": "ci",
+ "description": "Ensures that the vcpkg-make port functions are unit tested.",
+ "license": "MIT",
+ "dependencies": [
+ {
+ "name": "unit-test-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-make",
+ "host": true
+ }
+ ],
+ "default-features": [
+ {
+ "name": "scripts-cl-cpp-wrapper",
+ "platform": "windows & !mingw"
+ },
+ {
+ "name": "vcpkg-make-cl-cpp-wrapper",
+ "platform": "windows & !mingw"
+ },
+ "z-vcpkg-make-normalize-arch",
+ "z-vcpkg-make-determine-host-arch",
+ "z-vcpkg-make-determine-target-arch",
+ "z-vcpkg-make-determine-target-triplet",
+ "z-vcpkg-make-get-configure-triplets",
+ "z-vcpkg-make-prepare-compile-flags",
+ "z-vcpkg-make-z-adapt-lib-link-names"
+ ],
+ "features": {
+ "scripts-cl-cpp-wrapper": {
+ "description": "Test the cl_cpp_wrapper in scripts"
+ },
+ "vcpkg-make-cl-cpp-wrapper": {
+ "description": "Test the cl_cpp_wrapper in vcpkg-make"
+ },
+ "z-vcpkg-make-normalize-arch": {
+ "description": "Test the z_vcpkg_make_normalize_arch function"
+ },
+ "z-vcpkg-make-determine-host-arch": {
+ "description": "Test the z_vcpkg_make_determine_host_arch function"
+ },
+ "z-vcpkg-make-determine-target-arch": {
+ "description": "Test the z_vcpkg_make_determine_target_arch function"
+ },
+ "z-vcpkg-make-determine-target-triplet": {
+ "description": "Test the z_vcpkg_make_determine_target_arch triplet"
+ },
+ "z-vcpkg-make-get-configure-triplets": {
+ "description": "Test the z_vcpkg_make_get_configure_triplets function"
+ },
+ "z-vcpkg-make-get-crosscompiling": {
+ "description": "Test the z_vcpkg_make_get_crosscompiling function"
+ },
+ "z-vcpkg-make-prepare-compile-flags": {
+ "description": "Test the z_vcpkg_make_prepare_compile_flags function"
+ },
+ "z-vcpkg-make-z-adapt-lib-link-names": {
+ "description": "Test the z_vcpkg_make_z_adapt_lib_link_names function"
+ }
+ }
+}