diff options
Diffstat (limited to 'vcpkg/scripts/test_ports/vcpkg-ci-vcpkg-make')
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" + } + } +} |