From 78bb1df479a856544035dd9724c19d10f54c1420 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Thu, 23 Mar 2023 09:08:31 +0100 Subject: [PATCH 01/45] Fix lib suffix matching --- scripts/cmake/vcpkg_configure_make.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index c28fb4795e744b..89f1aebc9e7bd7 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -586,7 +586,7 @@ function(vcpkg_configure_make) set(l_prefix) if(x_vcpkg_transform_libs) set(l_prefix "-l") - list(TRANSFORM all_libs_list REPLACE "(.dll.lib|.lib|.a|.so)$" "") + list(TRANSFORM all_libs_list REPLACE "[.](dll[.]lib|lib|a|so)$" "") if(VCPKG_TARGET_IS_WINDOWS) list(REMOVE_ITEM all_libs_list "uuid") endif() From 94bfed4285d8e4077aa036c4708d8ae051a55c38 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Thu, 23 Mar 2023 09:09:27 +0100 Subject: [PATCH 02/45] Preserve flags when transforming standard libs --- scripts/cmake/vcpkg_configure_make.cmake | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index 89f1aebc9e7bd7..68130caae9b05c 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -583,24 +583,20 @@ function(vcpkg_configure_make) # Note: Env LIBPATH;LIB are on the search path for libtool by default on windows. # It even does unix/dos-short/unix transformation with the path to get rid of spaces. endif() - set(l_prefix) if(x_vcpkg_transform_libs) - set(l_prefix "-l") list(TRANSFORM all_libs_list REPLACE "[.](dll[.]lib|lib|a|so)$" "") if(VCPKG_TARGET_IS_WINDOWS) list(REMOVE_ITEM all_libs_list "uuid") endif() - list(TRANSFORM all_libs_list REPLACE "^(${l_prefix})" "") - endif() - list(JOIN all_libs_list " ${l_prefix}" all_libs_string) - if(VCPKG_TARGET_IS_MINGW AND VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") - # libtool must be told explicitly that there is no dynamic linkage for uuid. - # The "-Wl,..." syntax is understood by libtool and gcc, but no by ld. - string(REPLACE " -luuid" " -Wl,-Bstatic,-luuid,-Bdynamic" all_libs_string "${all_libs_string}") + list(TRANSFORM all_libs_list REPLACE "^([^-])" "-l\\1") + if(VCPKG_TARGET_IS_MINGW AND VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") + # libtool must be told explicitly that there is no dynamic linkage for uuid. + # The "-Wl,..." syntax is understood by libtool and gcc, but no by ld. + list(TRANSFORM all_libs_list REPLACE "^-luuid\$" "-Wl,-Bstatic,-luuid,-Bdynamic") + endif() endif() - - if(all_libs_string) - set(all_libs_string "${l_prefix}${all_libs_string}") + if(all_libs_list) + list(JOIN all_libs_list " " all_libs_string) if(DEFINED ENV{LIBS}) set(ENV{LIBS} "$ENV{LIBS} ${all_libs_string}") else() From fc21963817e1044b8ba6cc9501e3e1090787f02c Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Thu, 30 Mar 2023 08:41:01 +0200 Subject: [PATCH 03/45] Use separate_arguments --- scripts/cmake/vcpkg_configure_make.cmake | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index 68130caae9b05c..80f188859d2cdf 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -112,10 +112,6 @@ macro(z_vcpkg_append_to_configure_environment inoutstring var defaultval) endif() endmacro() -macro(z_convert_to_list input output) - string(REGEX MATCHALL "(( +|^ *)[^ ]+)" ${output} "${${input}}") -endmacro() - function(vcpkg_configure_make) # parse parameters such that semicolons in options arguments to COMMAND don't get erased cmake_parse_arguments(PARSE_ARGV 0 arg @@ -569,11 +565,10 @@ function(vcpkg_configure_make) endif() endif() - z_convert_to_list(VCPKG_DETECTED_CMAKE_C_STANDARD_LIBRARIES c_libs_list) - z_convert_to_list(VCPKG_DETECTED_CMAKE_CXX_STANDARD_LIBRARIES cxx_libs_list) - set(all_libs_list ${c_libs_list} ${cxx_libs_list}) - list(REMOVE_DUPLICATES all_libs_list) - list(TRANSFORM all_libs_list STRIP) + separate_arguments(c_libs_list NATIVE_COMMAND "${VCPKG_DETECTED_CMAKE_C_STANDARD_LIBRARIES}") + separate_arguments(cxx_libs_list NATIVE_COMMAND "${VCPKG_DETECTED_CMAKE_CXX_STANDARD_LIBRARIES}") + list(REMOVE_ITEM cxx_libs_list ${c_libs_list}) + set(all_libs_list ${cxx_libs_list} ${c_libs_list}) #Do lib list transformation from name.lib to -lname if necessary set(x_vcpkg_transform_libs ON) if(VCPKG_TARGET_IS_UWP) From 991cf8dc05b6316539e225d2165b99e6b19524fc Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Thu, 30 Mar 2023 09:49:23 +0200 Subject: [PATCH 04/45] Fix transform --- scripts/cmake/vcpkg_configure_make.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index 80f188859d2cdf..d77c0ce386e5c9 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -583,7 +583,7 @@ function(vcpkg_configure_make) if(VCPKG_TARGET_IS_WINDOWS) list(REMOVE_ITEM all_libs_list "uuid") endif() - list(TRANSFORM all_libs_list REPLACE "^([^-])" "-l\\1") + list(TRANSFORM all_libs_list REPLACE "^([^-].*)" "-l\\1") if(VCPKG_TARGET_IS_MINGW AND VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") # libtool must be told explicitly that there is no dynamic linkage for uuid. # The "-Wl,..." syntax is understood by libtool and gcc, but no by ld. From 26e7924afeed2dd8f84a2912d730d2cb4edaf093 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Wed, 3 May 2023 08:53:16 +0200 Subject: [PATCH 05/45] [vcpkg_configure_make] Fix SKIP_CONFIGURE --- scripts/cmake/vcpkg_configure_make.cmake | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index a18449c690ae6b..8c8392b529f108 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -164,7 +164,10 @@ function(vcpkg_configure_make) if(EXISTS "${src_dir}/configure" AND EXISTS "${src_dir}/configure.ac" AND arg_AUTOCONFIG) # remove configure; rerun autoconf set(requires_autoconfig ON) file(REMOVE "${SRC_DIR}/configure") # remove possible outdated configure scripts - elseif(EXISTS "${src_dir}/configure" AND NOT arg_SKIP_CONFIGURE) # run normally; no autoconf or autogen required + elseif(arg_SKIP_CONFIGURE) + # no action requested + elseif(EXISTS "${src_dir}/configure") + # run normally; no autoconf or autogen required elseif(EXISTS "${src_dir}/configure.ac") # Run autoconfig set(requires_autoconfig ON) set(arg_AUTOCONFIG ON) From 22b473677c38c6d7013bfcf4dda3ab023cb38282 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Thu, 4 May 2023 09:10:49 +0200 Subject: [PATCH 06/45] Update linker flags --- scripts/azure-pipelines/azure-pipelines.yml | 4 +- scripts/cmake/vcpkg_configure_make.cmake | 65 +++++++++------------ 2 files changed, 31 insertions(+), 38 deletions(-) diff --git a/scripts/azure-pipelines/azure-pipelines.yml b/scripts/azure-pipelines/azure-pipelines.yml index e5ba113f9304f4..8b931196e39ed5 100644 --- a/scripts/azure-pipelines/azure-pipelines.yml +++ b/scripts/azure-pipelines/azure-pipelines.yml @@ -16,7 +16,7 @@ parameters: - name: tripletPattern displayName: 'Enable triplets which contain this substring' type: string - default: '-' + default: '^x64-windows$' jobs: - template: windows/azure-pipelines.yml @@ -112,4 +112,4 @@ jobs: poolName: $(android-pool) dockerImage: $(linux-docker-image) vcpkgToolSha: ${{ parameters.vcpkgToolSha }} - tripletPattern: ${{ parameters.tripletPattern }} \ No newline at end of file + tripletPattern: ${{ parameters.tripletPattern }} diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index 8c8392b529f108..be213029215184 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -670,51 +670,44 @@ function(vcpkg_configure_make) else() # dynamic set(LINKER_FLAGS_${var_suffix} "${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}}") endif() + set(ARFLAGS_${var_suffix} "${VCPKG_DETECTED_CMAKE_STATIC_LINKER_FLAGS_${var_suffix}}") + if(ARFLAGS_${var_suffix}) + # ARFLAGS need to know the command for creating an archive (Maybe needs user customization?) + # or extract it from CMake via CMAKE_${lang}_ARCHIVE_CREATE ? + # or from CMAKE_${lang}_${rule} with rule being one of CREATE_SHARED_MODULE CREATE_SHARED_LIBRARY LINK_EXECUTABLE + string(PREPEND ARFLAGS_${var_suffix} "cr ") + endif() + string(STRIP "${ARFLAGS_${var_suffix}}" ARFLAGS_${var_suffix}) + set(LDFLAGS_${var_suffix} "${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}}") - if (CMAKE_HOST_WIN32 AND VCPKG_DETECTED_CMAKE_C_COMPILER_ID MATCHES [[cl\.exe$]]) - if(NOT vcm_paths_with_spaces) - string(APPEND LDFLAGS_${var_suffix} " -L${z_vcpkg_installed_path}${path_suffix_${var_suffix}}/lib -L${z_vcpkg_installed_path}${path_suffix_${var_suffix}}/lib/manual-link") + # Could use a future VCPKG_DETECTED_CMAKE_LIBRARY_PATH_FLAG + set(LIBRARY_PATH_FLAG "-L") + set(LINKER_FLAG_ESCAPE "") + # Could use a future VCPKG_DETECTED_MSVC + set(using_msvc_link 0) + if(VCPKG_TARGET_IS_WINDOWS AND VCPKG_DETECTED_CMAKE_LINKER MATCHES [[link\.exe$]]) + set(using_msvc_link 1) + set(LIBRARY_PATH_FLAG "-LIBPATH:") + # Removed by libtool + set(LINKER_FLAG_ESCAPE "-Xlinker ") + if(arg_USE_WRAPPERS) + # 1st and 3rd are removed by libtool, 2nd by wrapper + set(LINKER_FLAG_ESCAPE "-Xlinker -Xlinker -Xlinker ") endif() if(DEFINED ENV{_LINK_}) set(LINK_ENV_${var_suffix} "$ENV{_LINK_} ${LINKER_FLAGS_${var_suffix}}") else() set(LINK_ENV_${var_suffix} "${LINKER_FLAGS_${var_suffix}}") endif() - else() - set(link_required_dirs "") - if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${var_suffix}}/lib") - set(link_required_dirs "-L${z_vcpkg_installed_path}${path_suffix_${var_suffix}}/lib") - endif() - if(EXISTS "{CURRENT_INSTALLED_DIR}${path_suffix_${var_suffix}}/lib/manual-link") - set(link_required_dirs "${link_required_dirs} -L${z_vcpkg_installed_path}${path_suffix_${var_suffix}}/lib/manual-link") - endif() - string(STRIP "${link_required_dirs}" link_required_dirs) - if(link_required_dirs) - string(PREPEND LDFLAGS_${var_suffix} "${link_required_dirs} ") - # ARFLAGS doesn't need -L search paths since it just bundles object files - endif() - if(ARFLAGS_${var_suffix}) - # ARFLAGS need to know the command for creating an archive (Maybe needs user customization?) - # or extract it from CMake via CMAKE_${lang}_ARCHIVE_CREATE ? - # or from CMAKE_${lang}_${rule} with rule being one of CREATE_SHARED_MODULE CREATE_SHARED_LIBRARY LINK_EXECUTABLE - string(PREPEND ARFLAGS_${var_suffix} "cr ") - endif() - string(STRIP "${LDFLAGS_${var_suffix}}" LDFLAGS_${var_suffix}) - string(STRIP "${ARFLAGS_${var_suffix}}" ARFLAGS_${var_suffix}) - if(VCPKG_TARGET_IS_WINDOWS AND VCPKG_DETECTED_CMAKE_LINKER MATCHES [[link\.exe$]]) - # Do not touch autotools quirks incoming! - # -Xlinker is repeated three times because: - # - libtool script eats -Xlinker - # - the compile wrapper eats -Xlinker - # - passing through both tools requires 3 -Xlinker; two being eaten in the first script. - # passing only through one script will keep one -Xlinker (done in configure) - # but cl will just ignore those with a warning. (Just like -Xcompiler) - separate_arguments(LDFLAGS_LIST NATIVE_COMMAND "${LDFLAGS_${var_suffix}}") - list(JOIN LDFLAGS_LIST " -Xlinker -Xlinker -Xlinker " LDFLAGS_${var_suffix}) - string(PREPEND LDFLAGS_${var_suffix} "-Xlinker -Xlinker -Xlinker ") - endif() endif() + if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${var_suffix}}/lib/manual-link") + string(PREPEND LDFLAGS_${var_suffix} "${LINKER_FLAG_ESCAPE}${LIBRARY_PATH_FLAG}${z_vcpkg_installed_path}${path_suffix_${var_suffix}}/lib/manual-link ") + endif() + if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${var_suffix}}/lib") + string(PREPEND LDFLAGS_${var_suffix} "${LINKER_FLAG_ESCAPE}${LIBRARY_PATH_FLAG}${z_vcpkg_installed_path}${path_suffix_${var_suffix}}/lib ") + endif() + string(STRIP "${LDFLAGS_${var_suffix}}" LDFLAGS_${var_suffix}) endmacro() if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug" AND NOT arg_NO_DEBUG) From b83ad8c7b6d4bb3eb85d264ff8c9308f6fef53a4 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Fri, 5 May 2023 05:03:26 +0200 Subject: [PATCH 07/45] Update linker flags --- scripts/azure-pipelines/azure-pipelines.yml | 2 +- scripts/cmake/vcpkg_configure_make.cmake | 49 +++++++++++---------- 2 files changed, 27 insertions(+), 24 deletions(-) diff --git a/scripts/azure-pipelines/azure-pipelines.yml b/scripts/azure-pipelines/azure-pipelines.yml index 8b931196e39ed5..9b035eb6026c87 100644 --- a/scripts/azure-pipelines/azure-pipelines.yml +++ b/scripts/azure-pipelines/azure-pipelines.yml @@ -16,7 +16,7 @@ parameters: - name: tripletPattern displayName: 'Enable triplets which contain this substring' type: string - default: '^x64-windows$' + default: '^x64-uwp$' jobs: - template: windows/azure-pipelines.yml diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index be213029215184..0b6c949815fb06 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -665,49 +665,52 @@ function(vcpkg_configure_make) endif() macro(z_vcpkg_setup_make_linker_flags_vars var_suffix) - if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") - set(LINKER_FLAGS_${var_suffix} "${VCPKG_DETECTED_CMAKE_STATIC_LINKER_FLAGS_${var_suffix}}") - else() # dynamic - set(LINKER_FLAGS_${var_suffix} "${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}}") - endif() - - set(ARFLAGS_${var_suffix} "${VCPKG_DETECTED_CMAKE_STATIC_LINKER_FLAGS_${var_suffix}}") - if(ARFLAGS_${var_suffix}) + set(arflags "${VCPKG_DETECTED_CMAKE_STATIC_LINKER_FLAGS_${var_suffix}}") + if(arflags) # ARFLAGS need to know the command for creating an archive (Maybe needs user customization?) # or extract it from CMake via CMAKE_${lang}_ARCHIVE_CREATE ? # or from CMAKE_${lang}_${rule} with rule being one of CREATE_SHARED_MODULE CREATE_SHARED_LIBRARY LINK_EXECUTABLE - string(PREPEND ARFLAGS_${var_suffix} "cr ") + string(PREPEND arflags "cr ") endif() - string(STRIP "${ARFLAGS_${var_suffix}}" ARFLAGS_${var_suffix}) + string(STRIP "${arflags}" ARFLAGS_${var_suffix}) - set(LDFLAGS_${var_suffix} "${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}}") + set(ldflags "${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}}") # Could use a future VCPKG_DETECTED_CMAKE_LIBRARY_PATH_FLAG - set(LIBRARY_PATH_FLAG "-L") - set(LINKER_FLAG_ESCAPE "") + set(library_path_flag "-L") # Could use a future VCPKG_DETECTED_MSVC - set(using_msvc_link 0) if(VCPKG_TARGET_IS_WINDOWS AND VCPKG_DETECTED_CMAKE_LINKER MATCHES [[link\.exe$]]) - set(using_msvc_link 1) - set(LIBRARY_PATH_FLAG "-LIBPATH:") + set(library_path_flag "-LIBPATH:") + endif() + set(linker_flag_escape "") + if(VCPKG_TARGET_IS_WINDOWS AND VCPKG_DETECTED_CMAKE_C_COMPILER MATCHES [[cl\.exe$]]) # Removed by libtool - set(LINKER_FLAG_ESCAPE "-Xlinker ") + set(linker_flag_escape "-Xlinker ") if(arg_USE_WRAPPERS) # 1st and 3rd are removed by libtool, 2nd by wrapper - set(LINKER_FLAG_ESCAPE "-Xlinker -Xlinker -Xlinker ") + set(linker_flag_escape "-Xlinker -Xlinker -Xlinker ") + endif() + if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + set(linker_flags "${VCPKG_DETECTED_CMAKE_STATIC_LINKER_FLAGS_${var_suffix}}") + else() # dynamic + set(linker_flags "${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}}") endif() if(DEFINED ENV{_LINK_}) - set(LINK_ENV_${var_suffix} "$ENV{_LINK_} ${LINKER_FLAGS_${var_suffix}}") + set(LINK_ENV_${var_suffix} "$ENV{_LINK_} ${linker_flags}") else() - set(LINK_ENV_${var_suffix} "${LINKER_FLAGS_${var_suffix}}") + set(LINK_ENV_${var_suffix} "${linker_flags}") endif() + separate_arguments(ldflags_list NATIVE_COMMAND "${ldflags}") + list(TRANSFORM ldflags_list REPLACE " " "\\ ") + list(TRANSFORM ldflags_list PREPEND "${linker_flag_escape}") + list(JOIN ldflags_list " " ldflags) endif() if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${var_suffix}}/lib/manual-link") - string(PREPEND LDFLAGS_${var_suffix} "${LINKER_FLAG_ESCAPE}${LIBRARY_PATH_FLAG}${z_vcpkg_installed_path}${path_suffix_${var_suffix}}/lib/manual-link ") + string(PREPEND ldflags "${linker_flag_escape}${library_path_flag}${z_vcpkg_installed_path}${path_suffix_${var_suffix}}/lib/manual-link ") endif() if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${var_suffix}}/lib") - string(PREPEND LDFLAGS_${var_suffix} "${LINKER_FLAG_ESCAPE}${LIBRARY_PATH_FLAG}${z_vcpkg_installed_path}${path_suffix_${var_suffix}}/lib ") + string(PREPEND ldflags "${linker_flag_escape}${library_path_flag}${z_vcpkg_installed_path}${path_suffix_${var_suffix}}/lib ") endif() - string(STRIP "${LDFLAGS_${var_suffix}}" LDFLAGS_${var_suffix}) + string(STRIP "${ldflags}" LDFLAGS_${var_suffix}) endmacro() if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug" AND NOT arg_NO_DEBUG) From 547b8d7857a87a8fd13ab94382e173b60b197235 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Fri, 5 May 2023 07:34:18 +0200 Subject: [PATCH 08/45] Fix regex substitution --- scripts/cmake/vcpkg_configure_make.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index 0b6c949815fb06..ad8df7aabca5c2 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -700,7 +700,7 @@ function(vcpkg_configure_make) set(LINK_ENV_${var_suffix} "${linker_flags}") endif() separate_arguments(ldflags_list NATIVE_COMMAND "${ldflags}") - list(TRANSFORM ldflags_list REPLACE " " "\\ ") + list(TRANSFORM ldflags_list REPLACE " " "\\\\ ") list(TRANSFORM ldflags_list PREPEND "${linker_flag_escape}") list(JOIN ldflags_list " " ldflags) endif() From cca477e85eb91d2b15aef8e0b98e548cc310b78a Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Wed, 10 May 2023 12:53:40 +0200 Subject: [PATCH 09/45] Restore full CI --- scripts/azure-pipelines/azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/azure-pipelines/azure-pipelines.yml b/scripts/azure-pipelines/azure-pipelines.yml index 9b035eb6026c87..79e0fbb6cb05df 100644 --- a/scripts/azure-pipelines/azure-pipelines.yml +++ b/scripts/azure-pipelines/azure-pipelines.yml @@ -16,7 +16,7 @@ parameters: - name: tripletPattern displayName: 'Enable triplets which contain this substring' type: string - default: '^x64-uwp$' + default: '-' jobs: - template: windows/azure-pipelines.yml From 0015e8023c54968d24c222e9449388111e7d38bf Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sat, 13 May 2023 09:34:25 +0200 Subject: [PATCH 10/45] Reuse configure's linker flags setup --- scripts/cmake/vcpkg_build_make.cmake | 19 +---- scripts/cmake/vcpkg_configure_make.cmake | 98 ++++++++++++------------ 2 files changed, 50 insertions(+), 67 deletions(-) diff --git a/scripts/cmake/vcpkg_build_make.cmake b/scripts/cmake/vcpkg_build_make.cmake index 4aa327043fcc8f..4bb4861e51959c 100644 --- a/scripts/cmake/vcpkg_build_make.cmake +++ b/scripts/cmake/vcpkg_build_make.cmake @@ -90,25 +90,8 @@ function(vcpkg_build_make) message(STATUS "Building ${TARGET_TRIPLET}${short_buildtype}") z_vcpkg_extract_cpp_flags_and_set_cflags_and_cxxflags("${cmake_buildtype}") + z_vcpkg_setup_make_linker_flags_vars("${cmake_buildtype}") - if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") - set(LINKER_FLAGS_${cmake_buildtype} "${VCPKG_DETECTED_CMAKE_STATIC_LINKER_FLAGS_${cmake_buildtype}}") - else() # dynamic - set(LINKER_FLAGS_${cmake_buildtype} "${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${cmake_buildtype}}") - endif() - set(LDFLAGS_${cmake_buildtype} "") - if(EXISTS "${Z_VCPKG_INSTALLED}${path_suffix}/lib") - string(APPEND LDFLAGS_${cmake_buildtype} " -L${Z_VCPKG_INSTALLED}${path_suffix}/lib") - endif() - if(EXISTS "${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link") - string(APPEND LDFLAGS_${cmake_buildtype} " -L${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link") - endif() - if (CMAKE_HOST_WIN32 AND VCPKG_DETECTED_CMAKE_C_COMPILER MATCHES "cl.exe") - set(LINK_ENV_${cmake_buildtype} "$ENV{_LINK_} ${LINKER_FLAGS_${cmake_buildtype}}") - else() - string(APPEND LDFLAGS_${cmake_buildtype} " ${LINKER_FLAGS_${cmake_buildtype}}") - endif() - # Setup environment set(ENV{CPPFLAGS} "${CPPFLAGS_${cmake_buildtype}}") set(ENV{CFLAGS} "${CFLAGS_${cmake_buildtype}}") diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index ad8df7aabca5c2..74441c3c811563 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -107,6 +107,55 @@ macro(z_vcpkg_extract_cpp_flags_and_set_cflags_and_cxxflags flag_suffix) debug_message("CXXFLAGS_${flag_suffix}: ${CXXFLAGS_${flag_suffix}}") endmacro() +macro(z_vcpkg_setup_make_linker_flags_vars var_suffix) + set(arflags "${VCPKG_DETECTED_CMAKE_STATIC_LINKER_FLAGS_${var_suffix}}") + if(arflags) + # ARFLAGS need to know the command for creating an archive (Maybe needs user customization?) + # or extract it from CMake via CMAKE_${lang}_ARCHIVE_CREATE ? + # or from CMAKE_${lang}_${rule} with rule being one of CREATE_SHARED_MODULE CREATE_SHARED_LIBRARY LINK_EXECUTABLE + string(PREPEND arflags "cr ") + endif() + string(STRIP "${arflags}" ARFLAGS_${var_suffix}) + + set(ldflags "${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}}") + # Could use a future VCPKG_DETECTED_CMAKE_LIBRARY_PATH_FLAG + set(library_path_flag "-L") + # Could use a future VCPKG_DETECTED_MSVC + if(VCPKG_TARGET_IS_WINDOWS AND VCPKG_DETECTED_CMAKE_LINKER MATCHES [[link\.exe$]]) + set(library_path_flag "-LIBPATH:") + endif() + set(linker_flag_escape "") + if(VCPKG_TARGET_IS_WINDOWS AND VCPKG_DETECTED_CMAKE_C_COMPILER MATCHES [[cl\.exe$]]) + # Removed by libtool + set(linker_flag_escape "-Xlinker ") + if(arg_USE_WRAPPERS) + # 1st and 3rd are removed by libtool, 2nd by wrapper + set(linker_flag_escape "-Xlinker -Xlinker -Xlinker ") + endif() + if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + set(linker_flags "${VCPKG_DETECTED_CMAKE_STATIC_LINKER_FLAGS_${var_suffix}}") + else() # dynamic + set(linker_flags "${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}}") + endif() + if(DEFINED ENV{_LINK_}) + set(LINK_ENV_${var_suffix} "$ENV{_LINK_} ${linker_flags}") + else() + set(LINK_ENV_${var_suffix} "${linker_flags}") + endif() + separate_arguments(ldflags_list NATIVE_COMMAND "${ldflags}") + list(TRANSFORM ldflags_list REPLACE " " "\\\\ ") + list(TRANSFORM ldflags_list PREPEND "${linker_flag_escape}") + list(JOIN ldflags_list " " ldflags) + endif() + if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${var_suffix}}/lib/manual-link") + string(PREPEND ldflags "${linker_flag_escape}${library_path_flag}${z_vcpkg_installed_path}${path_suffix_${var_suffix}}/lib/manual-link ") + endif() + if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${var_suffix}}/lib") + string(PREPEND ldflags "${linker_flag_escape}${library_path_flag}${z_vcpkg_installed_path}${path_suffix_${var_suffix}}/lib ") + endif() + string(STRIP "${ldflags}" LDFLAGS_${var_suffix}) +endmacro() + macro(z_vcpkg_append_to_configure_environment inoutstring var defaultval) # Allows to overwrite settings in custom triplets via the environment on windows if(CMAKE_HOST_WIN32 AND DEFINED ENV{${var}}) @@ -664,55 +713,6 @@ function(vcpkg_configure_make) endif() endif() - macro(z_vcpkg_setup_make_linker_flags_vars var_suffix) - set(arflags "${VCPKG_DETECTED_CMAKE_STATIC_LINKER_FLAGS_${var_suffix}}") - if(arflags) - # ARFLAGS need to know the command for creating an archive (Maybe needs user customization?) - # or extract it from CMake via CMAKE_${lang}_ARCHIVE_CREATE ? - # or from CMAKE_${lang}_${rule} with rule being one of CREATE_SHARED_MODULE CREATE_SHARED_LIBRARY LINK_EXECUTABLE - string(PREPEND arflags "cr ") - endif() - string(STRIP "${arflags}" ARFLAGS_${var_suffix}) - - set(ldflags "${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}}") - # Could use a future VCPKG_DETECTED_CMAKE_LIBRARY_PATH_FLAG - set(library_path_flag "-L") - # Could use a future VCPKG_DETECTED_MSVC - if(VCPKG_TARGET_IS_WINDOWS AND VCPKG_DETECTED_CMAKE_LINKER MATCHES [[link\.exe$]]) - set(library_path_flag "-LIBPATH:") - endif() - set(linker_flag_escape "") - if(VCPKG_TARGET_IS_WINDOWS AND VCPKG_DETECTED_CMAKE_C_COMPILER MATCHES [[cl\.exe$]]) - # Removed by libtool - set(linker_flag_escape "-Xlinker ") - if(arg_USE_WRAPPERS) - # 1st and 3rd are removed by libtool, 2nd by wrapper - set(linker_flag_escape "-Xlinker -Xlinker -Xlinker ") - endif() - if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") - set(linker_flags "${VCPKG_DETECTED_CMAKE_STATIC_LINKER_FLAGS_${var_suffix}}") - else() # dynamic - set(linker_flags "${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}}") - endif() - if(DEFINED ENV{_LINK_}) - set(LINK_ENV_${var_suffix} "$ENV{_LINK_} ${linker_flags}") - else() - set(LINK_ENV_${var_suffix} "${linker_flags}") - endif() - separate_arguments(ldflags_list NATIVE_COMMAND "${ldflags}") - list(TRANSFORM ldflags_list REPLACE " " "\\\\ ") - list(TRANSFORM ldflags_list PREPEND "${linker_flag_escape}") - list(JOIN ldflags_list " " ldflags) - endif() - if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${var_suffix}}/lib/manual-link") - string(PREPEND ldflags "${linker_flag_escape}${library_path_flag}${z_vcpkg_installed_path}${path_suffix_${var_suffix}}/lib/manual-link ") - endif() - if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${var_suffix}}/lib") - string(PREPEND ldflags "${linker_flag_escape}${library_path_flag}${z_vcpkg_installed_path}${path_suffix_${var_suffix}}/lib ") - endif() - string(STRIP "${ldflags}" LDFLAGS_${var_suffix}) - endmacro() - if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug" AND NOT arg_NO_DEBUG) set(var_suffix DEBUG) set(path_suffix_${var_suffix} "/debug") From 65c259935b339826e520f6054041b6831eb8be37 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sat, 13 May 2023 10:37:39 +0200 Subject: [PATCH 11/45] Handle ldflags separately from linker flags --- scripts/cmake/vcpkg_configure_make.cmake | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index 74441c3c811563..4149e1508d617b 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -117,7 +117,6 @@ macro(z_vcpkg_setup_make_linker_flags_vars var_suffix) endif() string(STRIP "${arflags}" ARFLAGS_${var_suffix}) - set(ldflags "${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}}") # Could use a future VCPKG_DETECTED_CMAKE_LIBRARY_PATH_FLAG set(library_path_flag "-L") # Could use a future VCPKG_DETECTED_MSVC @@ -142,11 +141,9 @@ macro(z_vcpkg_setup_make_linker_flags_vars var_suffix) else() set(LINK_ENV_${var_suffix} "${linker_flags}") endif() - separate_arguments(ldflags_list NATIVE_COMMAND "${ldflags}") - list(TRANSFORM ldflags_list REPLACE " " "\\\\ ") - list(TRANSFORM ldflags_list PREPEND "${linker_flag_escape}") - list(JOIN ldflags_list " " ldflags) endif() + + set(ldflags "${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}}") if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${var_suffix}}/lib/manual-link") string(PREPEND ldflags "${linker_flag_escape}${library_path_flag}${z_vcpkg_installed_path}${path_suffix_${var_suffix}}/lib/manual-link ") endif() From ecd3a0d148e2a396f900bdcb692d224657394c7a Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sat, 13 May 2023 10:50:02 +0200 Subject: [PATCH 12/45] Factor out common definitions --- scripts/cmake/vcpkg_build_make.cmake | 29 ++++++------- scripts/cmake/vcpkg_configure_make.cmake | 55 +++++++++++++----------- 2 files changed, 41 insertions(+), 43 deletions(-) diff --git a/scripts/cmake/vcpkg_build_make.cmake b/scripts/cmake/vcpkg_build_make.cmake index 4bb4861e51959c..f3dfd271568724 100644 --- a/scripts/cmake/vcpkg_build_make.cmake +++ b/scripts/cmake/vcpkg_build_make.cmake @@ -70,24 +70,19 @@ function(vcpkg_build_make) # Since includes are buildtype independent those are setup by vcpkg_configure_make vcpkg_backup_env_variables(VARS LIB LIBPATH LIBRARY_PATH LD_LIBRARY_PATH CPPFLAGS CFLAGS CXXFLAGS RCFLAGS) + z_vcpkg_configure_make_common_definitions() + foreach(buildtype IN ITEMS "debug" "release") if (buildtype STREQUAL "debug" AND _VCPKG_MAKE_NO_DEBUG) continue() endif() if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "${buildtype}") - if("${buildtype}" STREQUAL "debug") - set(short_buildtype "-dbg") - set(cmake_buildtype "DEBUG") - set(path_suffix "/debug") - else() - # In NO_DEBUG mode, we only use ${TARGET_TRIPLET} directory. - set(short_buildtype "-rel") - set(cmake_buildtype "RELEASE") - set(path_suffix "") - endif() + string(TOUPPER "${buildtype}" cmake_buildtype) + set(short_buildtype "${short_name_${cmake_buildtype}}") + set(path_suffix "${path_suffix_${cmake_buildtype}}") - set(working_directory "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}${short_buildtype}/${arg_SUBPATH}") - message(STATUS "Building ${TARGET_TRIPLET}${short_buildtype}") + set(working_directory "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${short_buildtype}/${arg_SUBPATH}") + message(STATUS "Building ${TARGET_TRIPLET}-${short_buildtype}") z_vcpkg_extract_cpp_flags_and_set_cflags_and_cxxflags("${cmake_buildtype}") z_vcpkg_setup_make_linker_flags_vars("${cmake_buildtype}") @@ -128,31 +123,31 @@ function(vcpkg_build_make) vcpkg_execute_build_process( COMMAND ${no_parallel_make_cmd_line} WORKING_DIRECTORY "${working_directory}" - LOGNAME "${arg_LOGFILE_ROOT}-${TARGET_TRIPLET}${short_buildtype}" + LOGNAME "${arg_LOGFILE_ROOT}-${TARGET_TRIPLET}-${short_buildtype}" ) else() vcpkg_execute_build_process( COMMAND ${make_cmd_line} NO_PARALLEL_COMMAND ${no_parallel_make_cmd_line} WORKING_DIRECTORY "${working_directory}" - LOGNAME "${arg_LOGFILE_ROOT}-${TARGET_TRIPLET}${short_buildtype}" + LOGNAME "${arg_LOGFILE_ROOT}-${TARGET_TRIPLET}-${short_buildtype}" ) endif() - file(READ "${CURRENT_BUILDTREES_DIR}/${arg_LOGFILE_ROOT}-${TARGET_TRIPLET}${short_buildtype}-out.log" logdata) + file(READ "${CURRENT_BUILDTREES_DIR}/${arg_LOGFILE_ROOT}-${TARGET_TRIPLET}-${short_buildtype}-out.log" logdata) if(logdata MATCHES "Warning: linker path does not have real file for library") message(FATAL_ERROR "libtool could not find a file being linked against!") endif() if (arg_ENABLE_INSTALL) - message(STATUS "Installing ${TARGET_TRIPLET}${short_buildtype}") + message(STATUS "Installing ${TARGET_TRIPLET}-${short_buildtype}") vcpkg_list(SET make_cmd_line ${make_command} ${install_opts}) vcpkg_list(SET no_parallel_make_cmd_line ${make_command} ${no_parallel_install_opts}) vcpkg_execute_build_process( COMMAND ${make_cmd_line} NO_PARALLEL_COMMAND ${no_parallel_make_cmd_line} WORKING_DIRECTORY "${working_directory}" - LOGNAME "install-${TARGET_TRIPLET}${short_buildtype}" + LOGNAME "install-${TARGET_TRIPLET}-${short_buildtype}" ) endif() diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index 4149e1508d617b..c6a6d5ab9beaa8 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -61,6 +61,28 @@ macro(z_vcpkg_determine_autotools_target_arch_mac out_var) unset(osx_archs_num) endmacro() +# Define variables used in both vcpkg_configure_make and vcpkg_build_make: +# short_name_: unique abbreviation for the given build type +# path_suffix_: installation path suffix for the given build type +# z_vcpkg_installed_path: CURRENT_INSTALLED_DIR with escaped space characters +# z_vcpkg_prefix_path: CURRENT_INSTALLED_DIR with unprotected spaces, but drive letters transformed for mingw/msys +macro(z_vcpkg_configure_make_common_definitions) + set(short_name_RELEASE "rel") + set(short_name_DEBUG "dbg") + + set(path_suffix_RELEASE "") + set(path_suffix_DEBUG "/debug") + + # Some PATH handling for dealing with spaces....some tools will still fail with that! + # In particular, the libtool install command is unable to install correctly to paths with spaces. + string(REPLACE " " "\\ " z_vcpkg_installed_path "${CURRENT_INSTALLED_DIR}") + if(CMAKE_HOST_WIN32) + string(REGEX REPLACE "([a-zA-Z]):/" "/\\1/" z_vcpkg_prefix_path "${CURRENT_INSTALLED_DIR}") + else() + set(z_vcpkg_prefix_path "${CURRENT_INSTALLED_DIR}") + endif() +endmacro() + macro(z_vcpkg_extract_cpp_flags_and_set_cflags_and_cxxflags flag_suffix) string(REGEX MATCHALL "( |^)(-D|-isysroot|--sysroot=|-isystem|-m?[Aa][Rr][Cc][Hh]|--target=|-target) ?[^ ]+" CPPFLAGS_${flag_suffix} "${VCPKG_DETECTED_CMAKE_C_FLAGS_${flag_suffix}}") string(REGEX MATCHALL "( |^)(-D|-isysroot|--sysroot=|-isystem|-m?[Aa][Rr][Cc][Hh]|--target=|-target) ?[^ ]+" CXXPPFLAGS_${flag_suffix} "${VCPKG_DETECTED_CMAKE_CXX_FLAGS_${flag_suffix}}") @@ -526,26 +548,16 @@ function(vcpkg_configure_make) unset(z_vcpkg_make_set_env) endif() - # Some PATH handling for dealing with spaces....some tools will still fail with that! - # In particular, the libtool install command is unable to install correctly to paths with spaces. - # CURRENT_INSTALLED_DIR: Pristine native path (unprotected spaces, Windows drive letters) - # z_vcpkg_installed_path: Native path with escaped space characters - # z_vcpkg_prefix_path: Path with unprotected spaces, but drive letters transformed for mingw/msys - string(REPLACE " " "\\ " z_vcpkg_installed_path "${CURRENT_INSTALLED_DIR}") - if(CMAKE_HOST_WIN32) - string(REGEX REPLACE "([a-zA-Z]):/" "/\\1/" z_vcpkg_prefix_path "${CURRENT_INSTALLED_DIR}") - else() - set(z_vcpkg_prefix_path "${CURRENT_INSTALLED_DIR}") - endif() + z_vcpkg_configure_make_common_definitions() # Cleanup previous build dirs - file(REMOVE_RECURSE "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel" - "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg" + file(REMOVE_RECURSE "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${short_name_RELEASE}" + "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${short_name_DEBUG}" "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}") # Set configure paths set(arg_OPTIONS_RELEASE ${arg_OPTIONS_RELEASE} "--prefix=${z_vcpkg_prefix_path}") - set(arg_OPTIONS_DEBUG ${arg_OPTIONS_DEBUG} "--prefix=${z_vcpkg_prefix_path}/debug") + set(arg_OPTIONS_DEBUG ${arg_OPTIONS_DEBUG} "--prefix=${z_vcpkg_prefix_path}${path_suffix_DEBUG}") if(NOT arg_NO_ADDITIONAL_PATHS) # ${prefix} has an extra backslash to prevent early expansion when calling `bash -c configure "..."`. set(arg_OPTIONS_RELEASE ${arg_OPTIONS_RELEASE} @@ -559,8 +571,8 @@ function(vcpkg_configure_make) "--datarootdir=\\\${prefix}/share/${PORT}") set(arg_OPTIONS_DEBUG ${arg_OPTIONS_DEBUG} # Important: These should all be relative to prefix! - "--bindir=\\\${prefix}/../tools/${PORT}/debug/bin" - "--sbindir=\\\${prefix}/../tools/${PORT}/debug/sbin" + "--bindir=\\\${prefix}/../tools/${PORT}${path_suffix_DEBUG}/bin" + "--sbindir=\\\${prefix}/../tools/${PORT}${path_suffix_DEBUG}/sbin" "--libdir=\\\${prefix}/lib" # On some Linux distributions lib64 is the default "--includedir=\\\${prefix}/../include" "--datarootdir=\\\${prefix}/share/${PORT}") @@ -712,8 +724,6 @@ function(vcpkg_configure_make) if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug" AND NOT arg_NO_DEBUG) set(var_suffix DEBUG) - set(path_suffix_${var_suffix} "/debug") - set(short_name_${var_suffix} "dbg") list(APPEND all_buildtypes ${var_suffix}) z_vcpkg_extract_cpp_flags_and_set_cflags_and_cxxflags(${var_suffix}) z_vcpkg_setup_make_linker_flags_vars(${var_suffix}) @@ -721,8 +731,6 @@ function(vcpkg_configure_make) endif() if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") set(var_suffix RELEASE) - set(path_suffix_${var_suffix} "") - set(short_name_${var_suffix} "rel") list(APPEND all_buildtypes ${var_suffix}) z_vcpkg_extract_cpp_flags_and_set_cflags_and_cxxflags(${var_suffix}) z_vcpkg_setup_make_linker_flags_vars(${var_suffix}) @@ -755,12 +763,7 @@ function(vcpkg_configure_make) set(relative_build_path .) endif() - # Setup PKG_CONFIG_PATH - if ("${current_buildtype}" STREQUAL "DEBUG") - z_vcpkg_setup_pkgconfig_path(BASE_DIRS "${CURRENT_INSTALLED_DIR}/debug") - else() - z_vcpkg_setup_pkgconfig_path(BASE_DIRS "${CURRENT_INSTALLED_DIR}") - endif() + z_vcpkg_setup_pkgconfig_path(BASE_DIRS "${CURRENT_INSTALLED_DIR}${path_suffix_${current_buildtype}}") # Setup environment set(ENV{CPPFLAGS} "${CPPFLAGS_${current_buildtype}}") From d8293a199745ced3e8e77a274ebe2005d9a213be Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sat, 13 May 2023 10:51:49 +0200 Subject: [PATCH 13/45] Control docdir and mandir for debug --- scripts/cmake/vcpkg_configure_make.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index c6a6d5ab9beaa8..f2b3c2537aee77 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -575,6 +575,8 @@ function(vcpkg_configure_make) "--sbindir=\\\${prefix}/../tools/${PORT}${path_suffix_DEBUG}/sbin" "--libdir=\\\${prefix}/lib" # On some Linux distributions lib64 is the default "--includedir=\\\${prefix}/../include" + "--mandir=\\\${prefix}/share/${PORT}" + "--docdir=\\\${prefix}/share/${PORT}" "--datarootdir=\\\${prefix}/share/${PORT}") endif() # Setup common options From efefc8a2d252c9b1c6a6d910477f4efdc21c5d00 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sat, 13 May 2023 10:54:29 +0200 Subject: [PATCH 14/45] Use vcpkg_list APPEND --- scripts/cmake/vcpkg_configure_make.cmake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index f2b3c2537aee77..3e9198684cdf3e 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -556,11 +556,11 @@ function(vcpkg_configure_make) "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}") # Set configure paths - set(arg_OPTIONS_RELEASE ${arg_OPTIONS_RELEASE} "--prefix=${z_vcpkg_prefix_path}") - set(arg_OPTIONS_DEBUG ${arg_OPTIONS_DEBUG} "--prefix=${z_vcpkg_prefix_path}${path_suffix_DEBUG}") + vcpkg_list(APPEND arg_OPTIONS_RELEASE "--prefix=${z_vcpkg_prefix_path}") + vcpkg_list(APPEND arg_OPTIONS_DEBUG "--prefix=${z_vcpkg_prefix_path}${path_suffix_DEBUG}") if(NOT arg_NO_ADDITIONAL_PATHS) # ${prefix} has an extra backslash to prevent early expansion when calling `bash -c configure "..."`. - set(arg_OPTIONS_RELEASE ${arg_OPTIONS_RELEASE} + vcpkg_list(APPEND arg_OPTIONS_RELEASE # Important: These should all be relative to prefix! "--bindir=\\\${prefix}/tools/${PORT}/bin" "--sbindir=\\\${prefix}/tools/${PORT}/sbin" @@ -569,7 +569,7 @@ function(vcpkg_configure_make) "--mandir=\\\${prefix}/share/${PORT}" "--docdir=\\\${prefix}/share/${PORT}" "--datarootdir=\\\${prefix}/share/${PORT}") - set(arg_OPTIONS_DEBUG ${arg_OPTIONS_DEBUG} + vcpkg_list(APPEND arg_OPTIONS_DEBUG # Important: These should all be relative to prefix! "--bindir=\\\${prefix}/../tools/${PORT}${path_suffix_DEBUG}/bin" "--sbindir=\\\${prefix}/../tools/${PORT}${path_suffix_DEBUG}/sbin" From ccb18c44db2d03c616772b143b44cec3cd2c541a Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sat, 13 May 2023 11:51:29 +0200 Subject: [PATCH 15/45] Don't pass -avoid-version into configure --- scripts/cmake/vcpkg_configure_make.cmake | 7 ------- 1 file changed, 7 deletions(-) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index 3e9198684cdf3e..b734b563b2c7d4 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -781,13 +781,6 @@ function(vcpkg_configure_make) # Target windows with wrappers enabled cannot forward ARFLAGS since it breaks the wrapper set(ENV{ARFLAGS} "${ARFLAGS_${current_buildtype}}") endif() - # https://www.gnu.org/software/libtool/manual/html_node/Link-mode.html - # -avoid-version is handled specially by libtool link mode, this flag is not forwarded to linker, - # and libtool tries to avoid versioning for shared libraries and no symbolic links are created. - if(VCPKG_TARGET_IS_ANDROID) - set(ENV{LDFLAGS} "-avoid-version $ENV{LDFLAGS}") - set(ENV{LDFLAGS_FOR_BUILD} "-avoid-version $ENV{LDFLAGS_FOR_BUILD}") - endif() if(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_IOS) # configure not using all flags to check if compiler works ... From 4f70993f77a6e114375625912ba27a024a081a4e Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sat, 13 May 2023 13:33:24 +0200 Subject: [PATCH 16/45] Restore lost escaping --- scripts/cmake/vcpkg_configure_make.cmake | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index b734b563b2c7d4..65388e9ecce087 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -166,6 +166,11 @@ macro(z_vcpkg_setup_make_linker_flags_vars var_suffix) endif() set(ldflags "${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}}") + if(linker_flag_escape) + separate_arguments(ldflags_list NATIVE_COMMAND "${ldflags}") + list(TRANSFORM ldflags_list PREPEND "${linker_flag_escape}") + list(JOIN ldflags_list " " ldflags) + endif() if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${var_suffix}}/lib/manual-link") string(PREPEND ldflags "${linker_flag_escape}${library_path_flag}${z_vcpkg_installed_path}${path_suffix_${var_suffix}}/lib/manual-link ") endif() From 27446b790073e013f701a2a721cf332500118ad1 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sat, 13 May 2023 17:37:01 +0200 Subject: [PATCH 17/45] Copy --target from LDFLAGS to CC/CXX --- scripts/cmake/vcpkg_configure_make.cmake | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index 65388e9ecce087..b22a7db13bac06 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -165,18 +165,22 @@ macro(z_vcpkg_setup_make_linker_flags_vars var_suffix) endif() endif() - set(ldflags "${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}}") - if(linker_flag_escape) - separate_arguments(ldflags_list NATIVE_COMMAND "${ldflags}") - list(TRANSFORM ldflags_list PREPEND "${linker_flag_escape}") - list(JOIN ldflags_list " " ldflags) - endif() + set(cclinker_flags "") # flags which must be passed with CC/CXX to avoid libtool quirks + set(ldflags "") # flags which can be passed with LDFLAGS if escaped as needed + separate_arguments(ldflags_list NATIVE_COMMAND "${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}}") + foreach(item IN LISTS ldflags_list) + string(APPEND ldflags " ${linker_flag_escape}${item}") + if(item MATCHES "^--target=") + string(APPEND cclinker_flags " ${item}") + endif() + endforeach() if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${var_suffix}}/lib/manual-link") string(PREPEND ldflags "${linker_flag_escape}${library_path_flag}${z_vcpkg_installed_path}${path_suffix_${var_suffix}}/lib/manual-link ") endif() if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${var_suffix}}/lib") string(PREPEND ldflags "${linker_flag_escape}${library_path_flag}${z_vcpkg_installed_path}${path_suffix_${var_suffix}}/lib ") endif() + string(STRIP "${cclinker_flags}" CCLINKER_FLAGS_${var_suffix}) string(STRIP "${ldflags}" LDFLAGS_${var_suffix}) endmacro() @@ -787,6 +791,14 @@ function(vcpkg_configure_make) set(ENV{ARFLAGS} "${ARFLAGS_${current_buildtype}}") endif() + if(CCLINKER_FLAGS_${current_buildtype}) + # libtool removes some flags which are needed for configure tests. + set(ENV{CC} "$ENV{CC} ${CCLINKER_FLAGS_${current_buildtype}}") + set(ENV{CXX} "$ENV{CXX} ${CCLINKER_FLAGS_${current_buildtype}}") + set(ENV{CC_FOR_BUILD} "$ENV{CC_FOR_BUILD} ${CCLINKER_FLAGS_${current_buildtype}}") + set(ENV{CXX_FOR_BUILD} "$ENV{CXX_FOR_BUILD} ${CCLINKER_FLAGS_${current_buildtype}}") + endif() + if(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_IOS) # configure not using all flags to check if compiler works ... set(ENV{CC} "$ENV{CC} $ENV{CPPFLAGS} $ENV{CFLAGS}") From 31a54c35d1795e98c6a767ac9e3c37060348066e Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sat, 13 May 2023 19:20:27 +0200 Subject: [PATCH 18/45] Consolidate macros into one function --- scripts/cmake/vcpkg_build_make.cmake | 3 +- scripts/cmake/vcpkg_configure_make.cmake | 142 +++++++++++------------ 2 files changed, 71 insertions(+), 74 deletions(-) diff --git a/scripts/cmake/vcpkg_build_make.cmake b/scripts/cmake/vcpkg_build_make.cmake index f3dfd271568724..6d7fb3a7cdaacc 100644 --- a/scripts/cmake/vcpkg_build_make.cmake +++ b/scripts/cmake/vcpkg_build_make.cmake @@ -84,8 +84,7 @@ function(vcpkg_build_make) set(working_directory "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${short_buildtype}/${arg_SUBPATH}") message(STATUS "Building ${TARGET_TRIPLET}-${short_buildtype}") - z_vcpkg_extract_cpp_flags_and_set_cflags_and_cxxflags("${cmake_buildtype}") - z_vcpkg_setup_make_linker_flags_vars("${cmake_buildtype}") + z_vcpkg_configure_make_process_flags("${cmake_buildtype}") # Setup environment set(ENV{CPPFLAGS} "${CPPFLAGS_${cmake_buildtype}}") diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index b22a7db13bac06..1cbd08c53d43c8 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -83,61 +83,53 @@ macro(z_vcpkg_configure_make_common_definitions) endif() endmacro() -macro(z_vcpkg_extract_cpp_flags_and_set_cflags_and_cxxflags flag_suffix) - string(REGEX MATCHALL "( |^)(-D|-isysroot|--sysroot=|-isystem|-m?[Aa][Rr][Cc][Hh]|--target=|-target) ?[^ ]+" CPPFLAGS_${flag_suffix} "${VCPKG_DETECTED_CMAKE_C_FLAGS_${flag_suffix}}") - string(REGEX MATCHALL "( |^)(-D|-isysroot|--sysroot=|-isystem|-m?[Aa][Rr][Cc][Hh]|--target=|-target) ?[^ ]+" CXXPPFLAGS_${flag_suffix} "${VCPKG_DETECTED_CMAKE_CXX_FLAGS_${flag_suffix}}") - list(JOIN CXXPPFLAGS_${flag_suffix} "|" CXXREGEX) - if(CXXREGEX) - list(FILTER CPPFLAGS_${flag_suffix} INCLUDE REGEX "(${CXXREGEX})") +# Initializes well-known and auxiliary variables for flags +# - CCLINKER_FLAGS_: LDFLAGS which must be included in CC/CXX to sidestep libtool whitelist +# - CPPFLAGS_: preprocessor flags common to C and CXX +# - CFLAGS_ +# - CXXFLAGS_ +# - LDFLAGS_ +# - ARFLAGS_ +# - LINK_ENV_${var_suffix} +# Prerequisite: VCPKG_DETECTED_CMAKE_... vars loaded +function(z_vcpkg_configure_make_process_flags var_suffix) + set(c_flags "${VCPKG_DETECTED_CMAKE_C_FLAGS_${var_suffix}}") + set(cxx_flags "${VCPKG_DETECTED_CMAKE_CXX_FLAGS_${var_suffix}}") + + # Filter common cpp_flags out of c_flags and cxx_flags + string(REGEX MATCHALL "(^-| -)(D|isysroot|-sysroot=|isystem|m?[Aa][Rr][Cc][Hh]|-target=|target) ?[^ ]+" cxxpp_flags_list "${cxx_flags}") + if(cxxpp_flags_list STREQUAL "") + set(cpp_flags "") else() - set(CPPFLAGS_${flag_suffix}) - endif() - list(JOIN CPPFLAGS_${flag_suffix} "|" CPPREGEX) - list(JOIN CPPFLAGS_${flag_suffix} " " CPPFLAGS_${flag_suffix}) - set(CPPFLAGS_${flag_suffix} "${CPPFLAGS_${flag_suffix}}") - if(CPPREGEX) - string(REGEX REPLACE "(${CPPREGEX})" "" CFLAGS_${flag_suffix} "${VCPKG_DETECTED_CMAKE_C_FLAGS_${flag_suffix}}") - string(REGEX REPLACE "(${CPPREGEX})" "" CXXFLAGS_${flag_suffix} "${VCPKG_DETECTED_CMAKE_CXX_FLAGS_${flag_suffix}}") - else() - set(CFLAGS_${flag_suffix} "${VCPKG_DETECTED_CMAKE_C_FLAGS_${flag_suffix}}") - set(CXXFLAGS_${flag_suffix} "${VCPKG_DETECTED_CMAKE_CXX_FLAGS_${flag_suffix}}") - endif() - string(REGEX REPLACE " +" " " CPPFLAGS_${flag_suffix} "${CPPFLAGS_${flag_suffix}}") - string(REGEX REPLACE " +" " " CFLAGS_${flag_suffix} "${CFLAGS_${flag_suffix}}") - string(REGEX REPLACE " +" " " CXXFLAGS_${flag_suffix} "${CXXFLAGS_${flag_suffix}}") - string(STRIP "${CPPFLAGS_${flag_suffix}}" CPPFLAGS_${flag_suffix}) - string(STRIP "${CFLAGS_${flag_suffix}}" CFLAGS_${flag_suffix}) - string(STRIP "${CXXFLAGS_${flag_suffix}}" CXXFLAGS_${flag_suffix}) + list(JOIN cxxpp_flags_list "|" cxxpp_regex) + string(REGEX MATCHALL "(^-| -)(D|isysroot|-sysroot=|isystem|m?[Aa][Rr][Cc][Hh]|-target=|target) ?[^ ]+" cpp_flags_list "${c_flags}") + list(FILTER cpp_flags_list INCLUDE REGEX "${cxxpp_regex}") + list(JOIN cpp_flags_list "|" cpp_regex) + if(NOT cpp_regex STREQUAL "") + string(REGEX REPLACE "${cpp_regex}" "" c_flags "${c_flags}") + string(REGEX REPLACE "${cpp_regex}" "" cxx_flags "${cxx_flags}") + endif() + list(JOIN cpp_flags_list " " cpp_flags) + endif() + # libtool tries to filter CFLAGS passed to the link stage via a whitelist. - # that approach is flawed since it fails to pass flags unknown to libtool + # This approach is flawed since it fails to pass flags unknown to libtool # but required for linking to the link stage (e.g. -fsanitize=). - # libtool has an -R option so we need to guard against -RTC by using -Xcompiler - # while configuring there might be a lot of unknown compiler option warnings due to that - # just ignore them. + # libtool has an -R option so we need to guard against -RTC by using -Xcompiler. + # While configuring there might be a lot of unknown compiler option warnings + # due to that; just ignore them. + set(compiler_flag_escape "") if(VCPKG_DETECTED_CMAKE_C_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC" OR VCPKG_DETECTED_CMAKE_C_COMPILER_ID STREQUAL "MSVC") - separate_arguments(CFLAGS_LIST NATIVE_COMMAND "${CFLAGS_${flag_suffix}}") - list(JOIN CFLAGS_LIST " -Xcompiler " CFLAGS_${var_suffix}) - string(PREPEND CFLAGS_${var_suffix} "-Xcompiler ") - endif() - if(VCPKG_DETECTED_CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC" OR VCPKG_DETECTED_CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") - separate_arguments(CXXFLAGS_LIST NATIVE_COMMAND "${CXXFLAGS_${flag_suffix}}") - list(JOIN CXXFLAGS_LIST " -Xcompiler " CXXFLAGS_${var_suffix}) - string(PREPEND CXXFLAGS_${var_suffix} "-Xcompiler ") - endif() - debug_message("CPPFLAGS_${flag_suffix}: ${CPPFLAGS_${flag_suffix}}") - debug_message("CFLAGS_${flag_suffix}: ${CFLAGS_${flag_suffix}}") - debug_message("CXXFLAGS_${flag_suffix}: ${CXXFLAGS_${flag_suffix}}") -endmacro() - -macro(z_vcpkg_setup_make_linker_flags_vars var_suffix) - set(arflags "${VCPKG_DETECTED_CMAKE_STATIC_LINKER_FLAGS_${var_suffix}}") - if(arflags) - # ARFLAGS need to know the command for creating an archive (Maybe needs user customization?) - # or extract it from CMake via CMAKE_${lang}_ARCHIVE_CREATE ? - # or from CMAKE_${lang}_${rule} with rule being one of CREATE_SHARED_MODULE CREATE_SHARED_LIBRARY LINK_EXECUTABLE - string(PREPEND arflags "cr ") + set(compiler_flag_escape "-Xcompiler ") + endif() + if(compiler_flag_escape) + separate_arguments(c_flags_list NATIVE_COMMAND "${c_flags}") + list(TRANSFORM c_flags_list PREPEND "${compiler_flag_escape}") + list(JOIN c_flags_list " " c_flags) + separate_arguments(cxx_flags_list NATIVE_COMMAND "${cxx_flags}") + list(TRANSFORM cxx_flags_list PREPEND "${compiler_flag_escape}") + list(JOIN cxx_flags_list " " cxx_flags) endif() - string(STRIP "${arflags}" ARFLAGS_${var_suffix}) # Could use a future VCPKG_DETECTED_CMAKE_LIBRARY_PATH_FLAG set(library_path_flag "-L") @@ -154,19 +146,14 @@ macro(z_vcpkg_setup_make_linker_flags_vars var_suffix) set(linker_flag_escape "-Xlinker -Xlinker -Xlinker ") endif() if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") - set(linker_flags "${VCPKG_DETECTED_CMAKE_STATIC_LINKER_FLAGS_${var_suffix}}") + set(link_env "$ENV{_LINK_} ${VCPKG_DETECTED_CMAKE_STATIC_LINKER_FLAGS_${var_suffix}}") else() # dynamic - set(linker_flags "${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}}") - endif() - if(DEFINED ENV{_LINK_}) - set(LINK_ENV_${var_suffix} "$ENV{_LINK_} ${linker_flags}") - else() - set(LINK_ENV_${var_suffix} "${linker_flags}") + set(link_env "$ENV{_LINK_} ${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}}") endif() endif() - set(cclinker_flags "") # flags which must be passed with CC/CXX to avoid libtool quirks - set(ldflags "") # flags which can be passed with LDFLAGS if escaped as needed + set(cclinker_flags "") # linker flags which must be passed with CC/CXX to avoid libtool quirks + set(ldflags "") # linker flags which can be passed with LDFLAGS if escaped as needed separate_arguments(ldflags_list NATIVE_COMMAND "${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}}") foreach(item IN LISTS ldflags_list) string(APPEND ldflags " ${linker_flag_escape}${item}") @@ -180,9 +167,26 @@ macro(z_vcpkg_setup_make_linker_flags_vars var_suffix) if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${var_suffix}}/lib") string(PREPEND ldflags "${linker_flag_escape}${library_path_flag}${z_vcpkg_installed_path}${path_suffix_${var_suffix}}/lib ") endif() - string(STRIP "${cclinker_flags}" CCLINKER_FLAGS_${var_suffix}) - string(STRIP "${ldflags}" LDFLAGS_${var_suffix}) -endmacro() + + set(arflags "${VCPKG_DETECTED_CMAKE_STATIC_LINKER_FLAGS_${var_suffix}}") + if(arflags) + # ARFLAGS need to know the command for creating an archive (Maybe needs user customization?) + # or extract it from CMake via CMAKE_${lang}_ARCHIVE_CREATE ? + # or from CMAKE_${lang}_${rule} with rule being one of CREATE_SHARED_MODULE CREATE_SHARED_LIBRARY LINK_EXECUTABLE + string(PREPEND arflags "cr ") + endif() + + foreach(var IN ITEMS cclinker_flags cpp_flags c_flags cxx_flags ldflags arflags link_env) + string(STRIP "${${var}}" "${var}") + endforeach() + set(CCLINKER_FLAGS_${var_suffix} "${cclinker_flags}" PARENT_SCOPE) + set(CPPFLAGS_${var_suffix} "${cpp_flags}" PARENT_SCOPE) + set(CFLAGS_${var_suffix} "${c_flags}" PARENT_SCOPE) + set(CXXFLAGS_${var_suffix} "${cxx_flags}" PARENT_SCOPE) + set(LDFLAGS_${var_suffix} "${ldflags}" PARENT_SCOPE) + set(ARFLAGS_${var_suffix} "${arflags}" PARENT_SCOPE) + set(LINK_ENV_${var_suffix} "${link_env}" PARENT_SCOPE) +endfunction() macro(z_vcpkg_append_to_configure_environment inoutstring var defaultval) # Allows to overwrite settings in custom triplets via the environment on windows @@ -734,18 +738,12 @@ function(vcpkg_configure_make) endif() if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug" AND NOT arg_NO_DEBUG) - set(var_suffix DEBUG) - list(APPEND all_buildtypes ${var_suffix}) - z_vcpkg_extract_cpp_flags_and_set_cflags_and_cxxflags(${var_suffix}) - z_vcpkg_setup_make_linker_flags_vars(${var_suffix}) - unset(var_suffix) + list(APPEND all_buildtypes DEBUG) + z_vcpkg_configure_make_process_flags(DEBUG) endif() if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") - set(var_suffix RELEASE) - list(APPEND all_buildtypes ${var_suffix}) - z_vcpkg_extract_cpp_flags_and_set_cflags_and_cxxflags(${var_suffix}) - z_vcpkg_setup_make_linker_flags_vars(${var_suffix}) - unset(var_suffix) + list(APPEND all_buildtypes RELEASE) + z_vcpkg_configure_make_process_flags(RELEASE) endif() foreach(var IN ITEMS arg_OPTIONS arg_OPTIONS_RELEASE arg_OPTIONS_DEBUG) From 9369a62722351aa673dfd9b7ca259972a8b6f251 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Mon, 15 May 2023 08:45:23 +0200 Subject: [PATCH 19/45] Elaborate ABI flags --- scripts/cmake/vcpkg_configure_make.cmake | 90 +++++++++++++----------- 1 file changed, 49 insertions(+), 41 deletions(-) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index 1cbd08c53d43c8..fdf3e2490acfb3 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -84,8 +84,8 @@ macro(z_vcpkg_configure_make_common_definitions) endmacro() # Initializes well-known and auxiliary variables for flags -# - CCLINKER_FLAGS_: LDFLAGS which must be included in CC/CXX to sidestep libtool whitelist -# - CPPFLAGS_: preprocessor flags common to C and CXX +# - ABI_FLAGS_: ABI flags which must be included in CC/CXX to satisfy configure and libtool +# - CPPFLAGS_: preprocessor flags common to C and CXX # - CFLAGS_ # - CXXFLAGS_ # - LDFLAGS_ @@ -93,24 +93,41 @@ endmacro() # - LINK_ENV_${var_suffix} # Prerequisite: VCPKG_DETECTED_CMAKE_... vars loaded function(z_vcpkg_configure_make_process_flags var_suffix) - set(c_flags "${VCPKG_DETECTED_CMAKE_C_FLAGS_${var_suffix}}") - set(cxx_flags "${VCPKG_DETECTED_CMAKE_CXX_FLAGS_${var_suffix}}") + # Wrapping in ' ' to facilitate pattern matching + set(c_flags " ${VCPKG_DETECTED_CMAKE_C_FLAGS_${var_suffix}} ") + set(cxx_flags " ${VCPKG_DETECTED_CMAKE_CXX_FLAGS_${var_suffix}} ") + set(ldflags " ${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}} ") + + # Filter abi flags out of c_flags, cxx_flags and ldflags + set(abi_flags "") + string(REGEX MATCHALL " -(m?[Aa][Rr][Cc][Hh] +|-sysroot=|-target=|target +)[^ ]+" c_abi_flags "${c_flags}") + foreach(flag IN LISTS c_abi_flags) + string(APPEND abi_flags "${flag}") + string(REPLACE "${flag} " " " c_flags "${c_flags}") + string(REPLACE "${flag} " " " cxx_flags "${cxx_flags}") + string(REPLACE "${flag} " " " ldflags "${ldflags}") + endforeach() - # Filter common cpp_flags out of c_flags and cxx_flags - string(REGEX MATCHALL "(^-| -)(D|isysroot|-sysroot=|isystem|m?[Aa][Rr][Cc][Hh]|-target=|target) ?[^ ]+" cxxpp_flags_list "${cxx_flags}") - if(cxxpp_flags_list STREQUAL "") - set(cpp_flags "") - else() - list(JOIN cxxpp_flags_list "|" cxxpp_regex) - string(REGEX MATCHALL "(^-| -)(D|isysroot|-sysroot=|isystem|m?[Aa][Rr][Cc][Hh]|-target=|target) ?[^ ]+" cpp_flags_list "${c_flags}") - list(FILTER cpp_flags_list INCLUDE REGEX "${cxxpp_regex}") - list(JOIN cpp_flags_list "|" cpp_regex) - if(NOT cpp_regex STREQUAL "") - string(REGEX REPLACE "${cpp_regex}" "" c_flags "${c_flags}") - string(REGEX REPLACE "${cpp_regex}" "" cxx_flags "${cxx_flags}") + # Filter common cpp flags out of c_flags and cxx_flags + set(cpp_flags "") + string(REGEX MATCHALL " -(D|isystem) ?[^ ]+" cxx_cpp_flags "${cxx_flags}") + foreach(flag IN LISTS cxx_cpp_flags) + string(FIND "${c_flags}" "${flag} " index) + if(NOT index STREQUAL "-1") + string(APPEND cpp_flags "${flag}") + string(REPLACE "${flag} " " " c_flags "${c_flags}") + string(REPLACE "${flag} " " " cxx_flags "${cxx_flags}") endif() - list(JOIN cpp_flags_list " " cpp_flags) - endif() + endforeach() + string(REGEX MATCHALL " -(D|isystem) ?[^ ]+" c_cpp_flags "${c_flags}") + foreach(flag IN LISTS c_cpp_flags) + string(FIND "${cxx_flags}" "${flag} " index) + if(NOT index STREQUAL "-1") + string(APPEND cpp_flags "${flag}") + string(REPLACE "${flag} " " " c_flags "${c_flags}") + string(REPLACE "${flag} " " " cxx_flags "${cxx_flags}") + endif() + endforeach() # libtool tries to filter CFLAGS passed to the link stage via a whitelist. # This approach is flawed since it fails to pass flags unknown to libtool @@ -151,16 +168,11 @@ function(z_vcpkg_configure_make_process_flags var_suffix) set(link_env "$ENV{_LINK_} ${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}}") endif() endif() - - set(cclinker_flags "") # linker flags which must be passed with CC/CXX to avoid libtool quirks - set(ldflags "") # linker flags which can be passed with LDFLAGS if escaped as needed - separate_arguments(ldflags_list NATIVE_COMMAND "${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}}") - foreach(item IN LISTS ldflags_list) - string(APPEND ldflags " ${linker_flag_escape}${item}") - if(item MATCHES "^--target=") - string(APPEND cclinker_flags " ${item}") - endif() - endforeach() + if(linker_flag_escape) + separate_arguments(ldflags_list NATIVE_COMMAND "${ldflags}") + list(TRANSFORM ldflags_list PREPEND "${linker_flag_escape}") + list(JOIN ldflags_list " " ldflags) + endif() if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${var_suffix}}/lib/manual-link") string(PREPEND ldflags "${linker_flag_escape}${library_path_flag}${z_vcpkg_installed_path}${path_suffix_${var_suffix}}/lib/manual-link ") endif() @@ -176,10 +188,10 @@ function(z_vcpkg_configure_make_process_flags var_suffix) string(PREPEND arflags "cr ") endif() - foreach(var IN ITEMS cclinker_flags cpp_flags c_flags cxx_flags ldflags arflags link_env) + foreach(var IN ITEMS abi_flags cpp_flags c_flags cxx_flags ldflags arflags link_env) string(STRIP "${${var}}" "${var}") endforeach() - set(CCLINKER_FLAGS_${var_suffix} "${cclinker_flags}" PARENT_SCOPE) + set(ABI_FLAGS_${var_suffix} "${abi_flags}" PARENT_SCOPE) set(CPPFLAGS_${var_suffix} "${cpp_flags}" PARENT_SCOPE) set(CFLAGS_${var_suffix} "${c_flags}" PARENT_SCOPE) set(CXXFLAGS_${var_suffix} "${cxx_flags}" PARENT_SCOPE) @@ -789,18 +801,14 @@ function(vcpkg_configure_make) set(ENV{ARFLAGS} "${ARFLAGS_${current_buildtype}}") endif() - if(CCLINKER_FLAGS_${current_buildtype}) + # ABI_FLAGS isn't standard, but can be useful to reinject these flags into other variables + set(ENV{ABI_FLAGS} "${ABIFLAGS_${current_buildtype}}") + if(ABI_FLAGS_${current_buildtype}) # libtool removes some flags which are needed for configure tests. - set(ENV{CC} "$ENV{CC} ${CCLINKER_FLAGS_${current_buildtype}}") - set(ENV{CXX} "$ENV{CXX} ${CCLINKER_FLAGS_${current_buildtype}}") - set(ENV{CC_FOR_BUILD} "$ENV{CC_FOR_BUILD} ${CCLINKER_FLAGS_${current_buildtype}}") - set(ENV{CXX_FOR_BUILD} "$ENV{CXX_FOR_BUILD} ${CCLINKER_FLAGS_${current_buildtype}}") - endif() - - if(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_IOS) - # configure not using all flags to check if compiler works ... - set(ENV{CC} "$ENV{CC} $ENV{CPPFLAGS} $ENV{CFLAGS}") - set(ENV{CC_FOR_BUILD} "$ENV{CC_FOR_BUILD} $ENV{CPPFLAGS} $ENV{CFLAGS}") + set(ENV{CC} "$ENV{CC} ${ABI_FLAGS_${current_buildtype}}") + set(ENV{CXX} "$ENV{CXX} ${ABI_FLAGS_${current_buildtype}}") + set(ENV{CC_FOR_BUILD} "$ENV{CC_FOR_BUILD} ${ABI_FLAGS_${current_buildtype}}") + set(ENV{CXX_FOR_BUILD} "$ENV{CXX_FOR_BUILD} ${ABI_FLAGS_${current_buildtype}}") endif() if(LINK_ENV_${current_buildtype}) From 1a8d34ee8af6fc4894f1be5704a8c5b330f3d10f Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Thu, 18 May 2023 07:19:17 +0200 Subject: [PATCH 20/45] Elaborate flag processing --- scripts/cmake/vcpkg_build_make.cmake | 3 + scripts/cmake/vcpkg_configure_make.cmake | 157 +++++++++++++---------- 2 files changed, 95 insertions(+), 65 deletions(-) diff --git a/scripts/cmake/vcpkg_build_make.cmake b/scripts/cmake/vcpkg_build_make.cmake index 6d7fb3a7cdaacc..9944f490217c77 100644 --- a/scripts/cmake/vcpkg_build_make.cmake +++ b/scripts/cmake/vcpkg_build_make.cmake @@ -103,6 +103,9 @@ function(vcpkg_build_make) endforeach() unset(lib_env_vars) + # VCPKG_ABI_FLAGS isn't standard, but can be useful to reinject these flags into other variables + set(ENV{VCPKG_ABI_FLAGS} "${ABIFLAGS_${current_buildtype}}") + if(LINK_ENV_${cmake_buildtype}) set(config_link_backup "$ENV{_LINK_}") set(ENV{_LINK_} "${LINK_ENV_${cmake_buildtype}}") diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index fdf3e2490acfb3..a1d07d397e0234 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -84,7 +84,7 @@ macro(z_vcpkg_configure_make_common_definitions) endmacro() # Initializes well-known and auxiliary variables for flags -# - ABI_FLAGS_: ABI flags which must be included in CC/CXX to satisfy configure and libtool +# - ABI_FLAGS_: ABI flags which must be included in CC/CXX to satisfy both configure and libtool # - CPPFLAGS_: preprocessor flags common to C and CXX # - CFLAGS_ # - CXXFLAGS_ @@ -93,40 +93,88 @@ endmacro() # - LINK_ENV_${var_suffix} # Prerequisite: VCPKG_DETECTED_CMAKE_... vars loaded function(z_vcpkg_configure_make_process_flags var_suffix) - # Wrapping in ' ' to facilitate pattern matching - set(c_flags " ${VCPKG_DETECTED_CMAKE_C_FLAGS_${var_suffix}} ") - set(cxx_flags " ${VCPKG_DETECTED_CMAKE_CXX_FLAGS_${var_suffix}} ") - set(ldflags " ${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}} ") - - # Filter abi flags out of c_flags, cxx_flags and ldflags - set(abi_flags "") - string(REGEX MATCHALL " -(m?[Aa][Rr][Cc][Hh] +|-sysroot=|-target=|target +)[^ ]+" c_abi_flags "${c_flags}") - foreach(flag IN LISTS c_abi_flags) - string(APPEND abi_flags "${flag}") - string(REPLACE "${flag} " " " c_flags "${c_flags}") - string(REPLACE "${flag} " " " cxx_flags "${cxx_flags}") - string(REPLACE "${flag} " " " ldflags "${ldflags}") + # separate_aruments is needed to remove outer quotes from detected cmake variables. + # (e.g. Android NDK has "--sysroot=...") + separate_arguments(CFLAGS NATIVE_COMMAND "Z_VCM_WRAP ${VCPKG_DETECTED_CMAKE_C_FLAGS_${var_suffix}} Z_VCM_WRAP") + separate_arguments(CXXFLAGS NATIVE_COMMAND "Z_VCM_WRAP ${VCPKG_DETECTED_CMAKE_CXX_FLAGS_${var_suffix}} Z_VCM_WRAP") + separate_arguments(LDFLAGS NATIVE_COMMAND "Z_VCM_WRAP ${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}} Z_VCM_WRAP") + separate_arguments(ARFLAGS NATIVE_COMMAND "${VCPKG_DETECTED_CMAKE_STATIC_LINKER_FLAGS_${var_suffix}}") + + # Filter abi flags out of CFLAGS, CXXFLAGS and LDFLAGS + vcpkg_list(SET ABI_FLAGS) + set(pattern "") + foreach(arg IN LISTS CFLAGS) + if(arg STREQUAL "Z_VCM_WRAP") + continue() + elseif(NOT pattern STREQUAL "") + vcpkg_list(APPEND pattern "${arg}") + elseif(arg MATCHES "^--(sysroot|target)=.") + vcpkg_list(SET pattern "${arg}") + elseif(arg MATCHES "^-(m?[Aa][Rr][Cc][Hh]|target)\$") + vcpkg_list(SET pattern "${arg}") + continue() + else() + continue() + endif() + vcpkg_list(APPEND ABI_FLAGS ${pattern}) + string(REPLACE ";${pattern};" ";" CFLAGS "${CFLAGS}") + string(REPLACE ";${pattern};" ";" CXXFLAGS "${CXXFLAGS}") + string(REPLACE ";${pattern};" ";" LDFLAGS "${LDFLAGS}") + set(pattern "") endforeach() - # Filter common cpp flags out of c_flags and cxx_flags - set(cpp_flags "") - string(REGEX MATCHALL " -(D|isystem) ?[^ ]+" cxx_cpp_flags "${cxx_flags}") - foreach(flag IN LISTS cxx_cpp_flags) - string(FIND "${c_flags}" "${flag} " index) + # Filter common CPPFLAGS out of CFLAGS and CXXFLAGS + vcpkg_list(SET CPPFLAGS) + vcpkg_list(SET pattern) + foreach(arg IN LISTS CXXFLAGS) + if(arg STREQUAL "Z_VCM_WRAP") + continue() + elseif(NOT pattern STREQUAL "") + vcpkg_list(APPEND pattern "${arg}") + elseif(arg MATCHES "^-(D|isystem).") + vcpkg_list(SET pattern "${arg}") + elseif(arg MATCHES "^-(D|isystem)\$") + vcpkg_list(SET pattern "${arg}") + continue() + else() + continue() + endif() + string(FIND "${CFLAGS}" "${pattern} " index) if(NOT index STREQUAL "-1") - string(APPEND cpp_flags "${flag}") - string(REPLACE "${flag} " " " c_flags "${c_flags}") - string(REPLACE "${flag} " " " cxx_flags "${cxx_flags}") + vcpkg_list(APPEND CPPFLAGS ${pattern}) + string(REPLACE ";${pattern};" ";" CFLAGS "${CFLAGS}") + string(REPLACE ";${pattern};" ";" CXXFLAGS "${CXXFLAGS}") + string(REPLACE ";${pattern};" ";" LDFLAGS "${LDFLAGS}") endif() + vcpkg_list(SET pattern) endforeach() - string(REGEX MATCHALL " -(D|isystem) ?[^ ]+" c_cpp_flags "${c_flags}") - foreach(flag IN LISTS c_cpp_flags) - string(FIND "${cxx_flags}" "${flag} " index) + vcpkg_list(SET pattern) + foreach(arg IN LISTS CFLAGS) + if(arg STREQUAL "Z_VCM_WRAP") + continue() + elseif(NOT pattern STREQUAL "") + vcpkg_list(APPEND pattern "${arg}") + elseif(arg MATCHES "^-(D|isystem)\$") + vcpkg_list(SET pattern "${arg}") + continue() + elseif(arg MATCHES "^-(D|isystem).") + vcpkg_list(SET pattern "${arg}") + else() + continue() + endif() + string(FIND "${CXXFLAGS}" "${pattern} " index) if(NOT index STREQUAL "-1") - string(APPEND cpp_flags "${flag}") - string(REPLACE "${flag} " " " c_flags "${c_flags}") - string(REPLACE "${flag} " " " cxx_flags "${cxx_flags}") + vcpkg_list(APPEND CPPFLAGS ${pattern}) + string(REPLACE ";${pattern};" ";" CFLAGS "${CFLAGS}") + string(REPLACE ";${pattern};" ";" CXXFLAGS "${CXXFLAGS}") + string(REPLACE ";${pattern};" ";" LDFLAGS "${LDFLAGS}") endif() + vcpkg_list(SET pattern) + endforeach() + + # Remove start/end placeholders + foreach(list IN ITEMS CFLAGS CXXFLAGS LDFLAGS) + vcpkg_list(REMOVE_ITEM ${list} "Z_VCM_WRAP") endforeach() # libtool tries to filter CFLAGS passed to the link stage via a whitelist. @@ -140,12 +188,8 @@ function(z_vcpkg_configure_make_process_flags var_suffix) set(compiler_flag_escape "-Xcompiler ") endif() if(compiler_flag_escape) - separate_arguments(c_flags_list NATIVE_COMMAND "${c_flags}") - list(TRANSFORM c_flags_list PREPEND "${compiler_flag_escape}") - list(JOIN c_flags_list " " c_flags) - separate_arguments(cxx_flags_list NATIVE_COMMAND "${cxx_flags}") - list(TRANSFORM cxx_flags_list PREPEND "${compiler_flag_escape}") - list(JOIN cxx_flags_list " " cxx_flags) + list(TRANSFORM CFLAGS PREPEND "${compiler_flag_escape}") + list(TRANSFORM CXXFLAGS PREPEND "${compiler_flag_escape}") endif() # Could use a future VCPKG_DETECTED_CMAKE_LIBRARY_PATH_FLAG @@ -163,41 +207,32 @@ function(z_vcpkg_configure_make_process_flags var_suffix) set(linker_flag_escape "-Xlinker -Xlinker -Xlinker ") endif() if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") - set(link_env "$ENV{_LINK_} ${VCPKG_DETECTED_CMAKE_STATIC_LINKER_FLAGS_${var_suffix}}") - else() # dynamic - set(link_env "$ENV{_LINK_} ${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}}") + string(STRIP "$ENV{_LINK_} ${VCPKG_DETECTED_CMAKE_STATIC_LINKER_FLAGS_${var_suffix}}" LINK_ENV) + else() + string(STRIP "$ENV{_LINK_} ${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}}" LINK_ENV) endif() endif() if(linker_flag_escape) - separate_arguments(ldflags_list NATIVE_COMMAND "${ldflags}") - list(TRANSFORM ldflags_list PREPEND "${linker_flag_escape}") - list(JOIN ldflags_list " " ldflags) + list(TRANSFORM LDFLAGS PREPEND "${linker_flag_escape}") endif() if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${var_suffix}}/lib/manual-link") - string(PREPEND ldflags "${linker_flag_escape}${library_path_flag}${z_vcpkg_installed_path}${path_suffix_${var_suffix}}/lib/manual-link ") + vcpkg_list(PREPEND LDFLAGS "${linker_flag_escape}${library_path_flag}${z_vcpkg_installed_path}${path_suffix_${var_suffix}}/lib/manual-link") endif() if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${var_suffix}}/lib") - string(PREPEND ldflags "${linker_flag_escape}${library_path_flag}${z_vcpkg_installed_path}${path_suffix_${var_suffix}}/lib ") + vcpkg_list(PREPEND LDFLAGS "${linker_flag_escape}${library_path_flag}${z_vcpkg_installed_path}${path_suffix_${var_suffix}}/lib") endif() - set(arflags "${VCPKG_DETECTED_CMAKE_STATIC_LINKER_FLAGS_${var_suffix}}") - if(arflags) + if(ARFLAGS) # ARFLAGS need to know the command for creating an archive (Maybe needs user customization?) # or extract it from CMake via CMAKE_${lang}_ARCHIVE_CREATE ? # or from CMAKE_${lang}_${rule} with rule being one of CREATE_SHARED_MODULE CREATE_SHARED_LIBRARY LINK_EXECUTABLE - string(PREPEND arflags "cr ") + vcpkg_list(PREPEND ARFLAGS "cr") endif() - foreach(var IN ITEMS abi_flags cpp_flags c_flags cxx_flags ldflags arflags link_env) - string(STRIP "${${var}}" "${var}") + foreach(var IN ITEMS ABI_FLAGS CPPFLAGS CFLAGS CXXFLAGS LDFLAGS ARFLAGS) + list(JOIN ${var} " " string) + set(${var}_${var_suffix} "${string}" PARENT_SCOPE) endforeach() - set(ABI_FLAGS_${var_suffix} "${abi_flags}" PARENT_SCOPE) - set(CPPFLAGS_${var_suffix} "${cpp_flags}" PARENT_SCOPE) - set(CFLAGS_${var_suffix} "${c_flags}" PARENT_SCOPE) - set(CXXFLAGS_${var_suffix} "${cxx_flags}" PARENT_SCOPE) - set(LDFLAGS_${var_suffix} "${ldflags}" PARENT_SCOPE) - set(ARFLAGS_${var_suffix} "${arflags}" PARENT_SCOPE) - set(LINK_ENV_${var_suffix} "${link_env}" PARENT_SCOPE) endfunction() macro(z_vcpkg_append_to_configure_environment inoutstring var defaultval) @@ -231,15 +266,7 @@ function(vcpkg_configure_make) # Remove outer quotes from cmake variables which will be forwarded via makefile/shell variables # substituted into makefile commands (e.g. Android NDK has "--sysroot=...") - foreach(var IN ITEMS VCPKG_DETECTED_CMAKE_C_FLAGS_DEBUG - VCPKG_DETECTED_CMAKE_C_FLAGS_RELEASE - VCPKG_DETECTED_CMAKE_CXX_FLAGS_DEBUG - VCPKG_DETECTED_CMAKE_CXX_FLAGS_RELEASE - VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_DEBUG - VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_RELEASE - VCPKG_DETECTED_CMAKE_STATIC_LINKER_FLAGS_DEBUG - VCPKG_DETECTED_CMAKE_STATIC_LINKER_FLAGS_RELEASE - VCPKG_DETECTED_CMAKE_C_STANDARD_LIBRARIES + foreach(var IN ITEMS VCPKG_DETECTED_CMAKE_C_STANDARD_LIBRARIES VCPKG_DETECTED_CMAKE_CXX_STANDARD_LIBRARIES ) separate_arguments(cmake_list NATIVE_COMMAND "${${var}}") @@ -801,8 +828,8 @@ function(vcpkg_configure_make) set(ENV{ARFLAGS} "${ARFLAGS_${current_buildtype}}") endif() - # ABI_FLAGS isn't standard, but can be useful to reinject these flags into other variables - set(ENV{ABI_FLAGS} "${ABIFLAGS_${current_buildtype}}") + # VCPKG_ABI_FLAGS isn't standard, but can be useful to reinject these flags into other variables + set(ENV{VCPKG_ABI_FLAGS} "${ABIFLAGS_${current_buildtype}}") if(ABI_FLAGS_${current_buildtype}) # libtool removes some flags which are needed for configure tests. set(ENV{CC} "$ENV{CC} ${ABI_FLAGS_${current_buildtype}}") From 7547fb9ede0810c9ea3cc294de56e1594ffdaf22 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Thu, 18 May 2023 08:33:32 +0200 Subject: [PATCH 21/45] Update warnings for embedded space --- scripts/cmake/vcpkg_configure_make.cmake | 52 ++++++++++++++++++------ 1 file changed, 39 insertions(+), 13 deletions(-) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index a1d07d397e0234..5c990147ec37c2 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -99,6 +99,10 @@ function(z_vcpkg_configure_make_process_flags var_suffix) separate_arguments(CXXFLAGS NATIVE_COMMAND "Z_VCM_WRAP ${VCPKG_DETECTED_CMAKE_CXX_FLAGS_${var_suffix}} Z_VCM_WRAP") separate_arguments(LDFLAGS NATIVE_COMMAND "Z_VCM_WRAP ${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}} Z_VCM_WRAP") separate_arguments(ARFLAGS NATIVE_COMMAND "${VCPKG_DETECTED_CMAKE_STATIC_LINKER_FLAGS_${var_suffix}}") + foreach(var IN ITEMS CFLAGS CXXFLAGS LDFLAGS ARFLAGS) + vcpkg_list(APPEND z_vcm_all_flags ${${var}}) + endforeach() + set(z_vcm_all_flags "${z_vcm_all_flags}" PARENT_SCOPE) # Filter abi flags out of CFLAGS, CXXFLAGS and LDFLAGS vcpkg_list(SET ABI_FLAGS) @@ -326,17 +330,24 @@ function(vcpkg_configure_make) # LDFLAGS -> pass -L flags # LIBS -> pass -l flags - #Used by gcc/linux + # Used by gcc/linux vcpkg_backup_env_variables(VARS C_INCLUDE_PATH CPLUS_INCLUDE_PATH LIBRARY_PATH LD_LIBRARY_PATH) - #Used by cl + # Used by cl vcpkg_backup_env_variables(VARS INCLUDE LIB LIBPATH) - set(vcm_paths_with_spaces OFF) - if(CURRENT_PACKAGES_DIR MATCHES " " OR CURRENT_INSTALLED_DIR MATCHES " ") + vcpkg_list(SET z_vcm_paths_with_spaces) + if(CURRENT_PACKAGES_DIR MATCHES " ") + vcpkg_list(APPEND z_vcm_paths_with_spaces "${CURRENT_PACKAGES_DIR}") + endif() + if(CURRENT_INSTALLED_DIR MATCHES " ") + vcpkg_list(APPEND z_vcm_paths_with_spaces "${CURRENT_INSTALLED_DIR}") + endif() + if(z_vcm_paths_with_spaces) # Don't bother with whitespace. The tools will probably fail and I tried very hard trying to make it work (no success so far)! - message(WARNING "Detected whitespace in root directory. Please move the path to one without whitespaces! The required tools do not handle whitespaces correctly and the build will most likely fail") - set(vcm_paths_with_spaces ON) + vcpkg_list(APPEND z_vcm_paths_with_spaces "Please move the path to one without whitespaces!") + list(JOIN z_vcm_paths_with_spaces "\n " z_vcm_paths_with_spaces) + message(STATUS "Warning: Paths with embedded space may be handled incorrectly by configure:\n ${z_vcm_paths_with_spaces}") endif() set(configure_env "V=1") @@ -566,14 +577,16 @@ function(vcpkg_configure_make) list(APPEND arg_OPTIONS lt_cv_deplibs_check_method=pass_all) endif() else() - # Because OSX dosn't like CMAKE_C(XX)_COMPILER (cc) in CC/CXX and rather wants to have gcc/g++ + # OSX dosn't like CMAKE_C(XX)_COMPILER (cc) in CC/CXX and rather wants to have gcc/g++ + vcpkg_list(SET z_vcm_all_tools) function(z_vcpkg_make_set_env envvar cmakevar) - set(prog "${VCPKG_DETECTED_CMAKE_${cmakevar}} ${ARGN}") - string(STRIP "${prog}" prog) - if(DEFINED ENV{${envvar}}) - return() - endif() - if(VCPKG_DETECTED_CMAKE_${cmakevar}) + set(prog "${VCPKG_DETECTED_CMAKE_${cmakevar}}") + if(NOT DEFINED ENV{${envvar}} AND NOT prog STREQUAL "") + vcpkg_list(APPEND z_vcm_all_tools "${prog}") + if(ARGN) + string(APPEND prog " ${ARGN}") + endif() + set(z_vcm_all_tools "${z_vcm_all_tools}" PARENT_SCOPE) set(ENV{${envvar}} "${prog}") endif() endfunction() @@ -600,6 +613,13 @@ function(vcpkg_configure_make) unset(z_vcpkg_make_set_env) endif() + list(FILTER z_vcm_all_tools INCLUDE REGEX " ") + if(z_vcm_all_tools) + list(REMOVE_DUPLICATES z_vcm_all_tools) + list(JOIN z_vcm_all_tools "\n " tools) + message(STATUS "Warning: Tools with embedded space may be handled incorrectly by configure:\n ${tools}") + endif() + z_vcpkg_configure_make_common_definitions() # Cleanup previous build dirs @@ -784,6 +804,12 @@ function(vcpkg_configure_make) list(APPEND all_buildtypes RELEASE) z_vcpkg_configure_make_process_flags(RELEASE) endif() + list(FILTER z_vcm_all_flags INCLUDE REGEX " ") + if(z_vcm_all_flags) + list(REMOVE_DUPLICATES z_vcm_all_flags) + list(JOIN z_vcm_all_flags "\n " flags) + message(STATUS "Warning: Arguments with embedded space may be handled incorrectly by configure:\n ${flags}") + endif() foreach(var IN ITEMS arg_OPTIONS arg_OPTIONS_RELEASE arg_OPTIONS_DEBUG) vcpkg_list(SET tmp) From 0762e72de0834df5738085d9d65f29a7f846e1ca Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Thu, 18 May 2023 08:55:51 +0200 Subject: [PATCH 22/45] Update windows tool path fixup --- scripts/cmake/vcpkg_configure_make.cmake | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index 5c990147ec37c2..edf36dd3650e98 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -470,14 +470,13 @@ function(vcpkg_configure_make) VCPKG_DETECTED_CMAKE_LINKER VCPKG_DETECTED_CMAKE_RANLIB VCPKG_DETECTED_CMAKE_OBJDUMP VCPKG_DETECTED_CMAKE_STRIP VCPKG_DETECTED_CMAKE_NM VCPKG_DETECTED_CMAKE_DLLTOOL VCPKG_DETECTED_CMAKE_RC_COMPILER) foreach(prog IN LISTS progs) - if(${prog}) - set(path "${${prog}}") - unset(prog_found CACHE) - get_filename_component(${prog} "${${prog}}" NAME) - find_program(prog_found ${${prog}} PATHS ENV PATH NO_DEFAULT_PATH) - if(NOT path STREQUAL prog_found) - get_filename_component(path "${path}" DIRECTORY) - vcpkg_add_to_path(PREPEND ${path}) + set(filepath "${${prog}}") + if(filepath MATCHES " ") + cmake_path(GET filepath FILENAME ${prog}) + find_program(z_vcm_prog_found NAMES "${${prog}}" PATHS ENV PATH NO_DEFAULT_PATH NO_CACHE) + if(NOT z_vcm_prog_found STREQUAL filepath) + cmake_path(GET filepath PARENT_PATH dir) + vcpkg_add_to_path(PREPEND "${dir}") endif() endif() endforeach() From 0f18276d5c2fbcab2f77c6850ba9d0265d18bd7e Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 14 May 2023 01:43:21 +0200 Subject: [PATCH 23/45] [libudns] No cross builds --- ports/libudns/vcpkg.json | 4 ++-- versions/baseline.json | 2 +- versions/l-/libudns.json | 5 +++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ports/libudns/vcpkg.json b/ports/libudns/vcpkg.json index 14593afec6bb2f..6abc74a83b5769 100644 --- a/ports/libudns/vcpkg.json +++ b/ports/libudns/vcpkg.json @@ -1,8 +1,8 @@ { "name": "libudns", "version": "0.4", - "port-version": 5, + "port-version": 6, "description": "The DNS library, udns, implements thread-safe stub DNS resolver functionality, which may be used both traditional, syncronous way and asyncronously, with application-supplied event loop.", "homepage": "https://github.com/ortclib/udns", - "supports": "!windows & !osx" + "supports": "!windows & !osx & native" } diff --git a/versions/baseline.json b/versions/baseline.json index e5d7fd9cb9e316..3fcb0b78388230 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -4614,7 +4614,7 @@ }, "libudns": { "baseline": "0.4", - "port-version": 5 + "port-version": 6 }, "libui": { "baseline": "2018-11-03", diff --git a/versions/l-/libudns.json b/versions/l-/libudns.json index 5eb542c70cd610..be716666c51755 100644 --- a/versions/l-/libudns.json +++ b/versions/l-/libudns.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "6f8e8ada491150e2c99846676f9f6eb55d743f7b", + "version": "0.4", + "port-version": 6 + }, { "git-tree": "b5b2efa89aac8ab7f97487cf72ed8aa489b2c6af", "version": "0.4", From 90734f84bdddcb74c7a93f41b7353fc5f8020405 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Thu, 18 May 2023 10:31:42 +0200 Subject: [PATCH 24/45] [vcpkg_find_acquire_program] Add VSCLANG Find VS's clang without fallback to the giant LLVM download. --- .../vcpkg_find_acquire_program(VSCLANG).cmake | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 scripts/cmake/vcpkg_find_acquire_program(VSCLANG).cmake diff --git a/scripts/cmake/vcpkg_find_acquire_program(VSCLANG).cmake b/scripts/cmake/vcpkg_find_acquire_program(VSCLANG).cmake new file mode 100644 index 00000000000000..e5121754a03e54 --- /dev/null +++ b/scripts/cmake/vcpkg_find_acquire_program(VSCLANG).cmake @@ -0,0 +1,17 @@ +if(NOT CMAKE_HOST_WIN32) + message(FATAL_ERROR "Visual Studio is only supported on Windows hosts.") +endif() + +set(program_name "") +set(paths_to_search + # LLVM in Visual Studio + "$ENV{LLVMInstallDir}/x64/bin" + "$ENV{LLVMInstallDir}/bin" + "$ENV{VCINSTALLDIR}/Tools/Llvm/x64/bin" + "$ENV{VCINSTALLDIR}/Tools/Llvm/bin" +) +find_program(VSCLANG + NAMES clang + PATHS ${paths_to_search} + NO_DEFAULT_PATH +) From 4d435ba029781753db9d719972f29ccc1f463ab5 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 14 May 2023 01:45:31 +0200 Subject: [PATCH 25/45] [gmp] Update CCAS setup --- ports/gmp/portfile.cmake | 35 +++++++++++++++++++---------------- ports/gmp/vcpkg.json | 2 +- versions/baseline.json | 2 +- versions/g-/gmp.json | 5 +++++ 4 files changed, 26 insertions(+), 18 deletions(-) diff --git a/ports/gmp/portfile.cmake b/ports/gmp/portfile.cmake index 09ebd530456b4b..b17affafd893ab 100644 --- a/ports/gmp/portfile.cmake +++ b/ports/gmp/portfile.cmake @@ -44,7 +44,7 @@ if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) endif() set(disable_assembly OFF) -set(ccas "") +set(ccas [[$CC]]) set(asmflags "-c") vcpkg_cmake_get_vars(cmake_vars_file) include("${cmake_vars_file}") @@ -57,30 +57,33 @@ if(VCPKG_DETECTED_CMAKE_C_COMPILER_ID STREQUAL "MSVC") string(APPEND asmflags " --target=arm64-pc-windows-msvc") else() set(disable_assembly ON) + set(ccas ":") endif() if(NOT disable_assembly) - vcpkg_find_acquire_program(CLANG) - set(ccas "${CLANG}") + vcpkg_find_acquire_program(VSCLANG) + set(ccas "${VSCLANG}") + if(ccas MATCHES " ") + cmake_path(GET ccas PARENT_PATH ccas_dir) + vcpkg_add_to_path(PREPEND "${ccas_dir}") + cmake_path(GET ccas FILENAME ccas_filename) + set(ccas "${ccas_filename}") + endif() endif() -elseif(VCPKG_TARGET_IS_MINGW AND VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") - # not exporting asm functions - set(disable_assembly ON) -elseif(VCPKG_TARGET_IS_LINUX AND VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") - set(ccas "${VCPKG_DETECTED_CMAKE_C_COMPILER}") +endif() + +if(VCPKG_TARGET_IS_MINGW AND VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") + set(disable_assembly ON) # dllexport issues +endif() + +if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") vcpkg_list(APPEND OPTIONS "ABI=32") string(APPEND asmflags " -m32") -else() - set(ccas "${VCPKG_DETECTED_CMAKE_C_COMPILER}") endif() +vcpkg_list(APPEND OPTIONS "CCAS=${ccas}" "ASMFLAGS=${asmflags}") if(disable_assembly) - vcpkg_list(APPEND OPTIONS "--enable-assembly=no") -elseif(ccas) - cmake_path(GET ccas PARENT_PATH ccas_dir) - vcpkg_add_to_path("${ccas_dir}") - cmake_path(GET ccas FILENAME ccas_command) + vcpkg_list(APPEND OPTIONS "--disable-assembly") endif() -vcpkg_list(APPEND OPTIONS "CCAS=${ccas_command}" "ASMFLAGS=${asmflags}") if(VCPKG_CROSSCOMPILING) set(ENV{HOST_TOOLS_PREFIX} "${CURRENT_HOST_INSTALLED_DIR}/manual-tools/${PORT}") diff --git a/ports/gmp/vcpkg.json b/ports/gmp/vcpkg.json index 2960c09f35f648..e1366c742ee0b8 100644 --- a/ports/gmp/vcpkg.json +++ b/ports/gmp/vcpkg.json @@ -1,7 +1,7 @@ { "name": "gmp", "version": "6.2.1", - "port-version": 18, + "port-version": 19, "description": "The GNU Multiple Precision Arithmetic Library", "homepage": "https://gmplib.org", "license": "LGPL-3.0-only OR GPL-2.0-only", diff --git a/versions/baseline.json b/versions/baseline.json index 3fcb0b78388230..15c09711dbef5e 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -2870,7 +2870,7 @@ }, "gmp": { "baseline": "6.2.1", - "port-version": 18 + "port-version": 19 }, "gmsh": { "baseline": "4.9.0", diff --git a/versions/g-/gmp.json b/versions/g-/gmp.json index 0b5fa719d94f14..02667610aa6dd2 100644 --- a/versions/g-/gmp.json +++ b/versions/g-/gmp.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "6fb1e4370e2396b4f939a2987fcb35c96d415225", + "version": "6.2.1", + "port-version": 19 + }, { "git-tree": "efae5abe8271dc5c25bfa47b9cc146a29e02dc05", "version": "6.2.1", From 4240d3a8687796e8c34a692407f324c2f9aca8c5 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Mon, 15 May 2023 09:40:24 +0200 Subject: [PATCH 26/45] [nettle] Update CCAS setup --- ports/nettle/portfile.cmake | 29 +++++++++++++++++------------ ports/nettle/vcpkg.json | 2 +- versions/baseline.json | 2 +- versions/n-/nettle.json | 5 +++++ 4 files changed, 24 insertions(+), 14 deletions(-) diff --git a/ports/nettle/portfile.cmake b/ports/nettle/portfile.cmake index a0b36b05a78e4b..07ee62d536ed42 100644 --- a/ports/nettle/portfile.cmake +++ b/ports/nettle/portfile.cmake @@ -35,34 +35,39 @@ endif() # As in gmp set(disable_assembly OFF) -set(ccas "") +set(ccas [[$CC]]) set(asmflags "") if(VCPKG_DETECTED_CMAKE_C_COMPILER_ID STREQUAL "MSVC") vcpkg_list(APPEND OPTIONS ac_cv_func_memset=yes) if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") - string(APPEND asmflags " --target=i686-pc-windows-msvc -m32") + string(APPEND asmflags " --target=i686-pc-windows-msvc") elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") string(APPEND asmflags " --target=x86_64-pc-windows-msvc") elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") string(APPEND asmflags " --target=arm64-pc-windows-msvc") else() set(disable_assembly ON) + set(ccas ":") endif() if(NOT disable_assembly) - vcpkg_find_acquire_program(CLANG) - set(ccas "${CLANG}") + vcpkg_find_acquire_program(VSCLANG) + set(ccas "${VSCLANG}") + if(ccas MATCHES " ") + cmake_path(GET ccas PARENT_PATH ccas_dir) + vcpkg_add_to_path(PREPEND "${ccas_dir}") + cmake_path(GET ccas FILENAME ccas_filename) + set(ccas "${ccas_filename}") + endif() endif() -else() - set(ccas "${VCPKG_DETECTED_CMAKE_C_COMPILER}") endif() +if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + string(APPEND asmflags " -m32") +endif() + +vcpkg_list(APPEND OPTIONS "CCAS=${ccas}" "ASMFLAGS=${asmflags}") if(disable_assembly) - vcpkg_list(APPEND OPTIONS "--enable-assembler=no") -elseif(ccas) - cmake_path(GET ccas PARENT_PATH ccas_dir) - vcpkg_add_to_path("${ccas_dir}") - cmake_path(GET ccas FILENAME ccas_command) - vcpkg_list(APPEND OPTIONS "CCAS=${ccas_command}" "ASMFLAGS=${asmflags}") + vcpkg_list(APPEND OPTIONS "--disable-assembly") endif() if(VCPKG_CROSSCOMPILING) diff --git a/ports/nettle/vcpkg.json b/ports/nettle/vcpkg.json index d7c2e93089d59c..743e79decf116a 100644 --- a/ports/nettle/vcpkg.json +++ b/ports/nettle/vcpkg.json @@ -1,7 +1,7 @@ { "name": "nettle", "version": "3.8.1", - "port-version": 1, + "port-version": 2, "description": "Nettle is a low-level cryptographic library that is designed to fit easily in more or less any context: In crypto toolkits for object-oriented languages (C++, Python, Pike, ...), in applications like LSH or GNUPG, or even in kernel space.", "homepage": "https://git.lysator.liu.se/nettle/nettle", "license": null, diff --git a/versions/baseline.json b/versions/baseline.json index 15c09711dbef5e..dd78cbf9717db9 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -5538,7 +5538,7 @@ }, "nettle": { "baseline": "3.8.1", - "port-version": 1 + "port-version": 2 }, "networkdirect-sdk": { "baseline": "2.0.1", diff --git a/versions/n-/nettle.json b/versions/n-/nettle.json index ce348da9711767..9345d1559ad199 100644 --- a/versions/n-/nettle.json +++ b/versions/n-/nettle.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "77d70e09821483f0fd1fc77f5c538d03083194f6", + "version": "3.8.1", + "port-version": 2 + }, { "git-tree": "7734b67cb656bf12488ea137779b56d8865bbb02", "version": "3.8.1", From 9ceb749833e0d1d374059f8394d6fa168ba9904f Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Thu, 18 May 2023 12:05:21 +0200 Subject: [PATCH 27/45] Fix VSCLANG --- scripts/cmake/vcpkg_find_acquire_program(VSCLANG).cmake | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program(VSCLANG).cmake b/scripts/cmake/vcpkg_find_acquire_program(VSCLANG).cmake index e5121754a03e54..76b21d23bc4afd 100644 --- a/scripts/cmake/vcpkg_find_acquire_program(VSCLANG).cmake +++ b/scripts/cmake/vcpkg_find_acquire_program(VSCLANG).cmake @@ -2,7 +2,7 @@ if(NOT CMAKE_HOST_WIN32) message(FATAL_ERROR "Visual Studio is only supported on Windows hosts.") endif() -set(program_name "") +set(program_name "clang") set(paths_to_search # LLVM in Visual Studio "$ENV{LLVMInstallDir}/x64/bin" @@ -15,3 +15,7 @@ find_program(VSCLANG PATHS ${paths_to_search} NO_DEFAULT_PATH ) +if(NOT VSCLANG) + list(JOIN paths_to_search "\n " paths) + message(FATAL_ERROR "Failed to find Visual Studio's clang in:\n ${paths}") +endif() From 3cb442603dd53f5ea6771f25b2af83827080fd7e Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Thu, 18 May 2023 12:31:59 +0200 Subject: [PATCH 28/45] WIP --- ports/gmp/portfile.cmake | 2 +- ports/nettle/portfile.cmake | 2 +- versions/g-/gmp.json | 2 +- versions/n-/nettle.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ports/gmp/portfile.cmake b/ports/gmp/portfile.cmake index b17affafd893ab..9d86f783e528db 100644 --- a/ports/gmp/portfile.cmake +++ b/ports/gmp/portfile.cmake @@ -64,7 +64,7 @@ if(VCPKG_DETECTED_CMAKE_C_COMPILER_ID STREQUAL "MSVC") set(ccas "${VSCLANG}") if(ccas MATCHES " ") cmake_path(GET ccas PARENT_PATH ccas_dir) - vcpkg_add_to_path(PREPEND "${ccas_dir}") + vcpkg_add_to_path(APPEND "${ccas_dir}") cmake_path(GET ccas FILENAME ccas_filename) set(ccas "${ccas_filename}") endif() diff --git a/ports/nettle/portfile.cmake b/ports/nettle/portfile.cmake index 07ee62d536ed42..33a7cbda977b3c 100644 --- a/ports/nettle/portfile.cmake +++ b/ports/nettle/portfile.cmake @@ -54,7 +54,7 @@ if(VCPKG_DETECTED_CMAKE_C_COMPILER_ID STREQUAL "MSVC") set(ccas "${VSCLANG}") if(ccas MATCHES " ") cmake_path(GET ccas PARENT_PATH ccas_dir) - vcpkg_add_to_path(PREPEND "${ccas_dir}") + vcpkg_add_to_path(APPEND "${ccas_dir}") cmake_path(GET ccas FILENAME ccas_filename) set(ccas "${ccas_filename}") endif() diff --git a/versions/g-/gmp.json b/versions/g-/gmp.json index 02667610aa6dd2..8d557a4b3bb097 100644 --- a/versions/g-/gmp.json +++ b/versions/g-/gmp.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "6fb1e4370e2396b4f939a2987fcb35c96d415225", + "git-tree": "4a7a53b873460cea9d6faa3fd26f3691f30ce81c", "version": "6.2.1", "port-version": 19 }, diff --git a/versions/n-/nettle.json b/versions/n-/nettle.json index 9345d1559ad199..0605b8bf996d0d 100644 --- a/versions/n-/nettle.json +++ b/versions/n-/nettle.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "77d70e09821483f0fd1fc77f5c538d03083194f6", + "git-tree": "61471e4f2845691e0f714bbdc15a90e4b882d073", "version": "3.8.1", "port-version": 2 }, From 0fcaa3e070e3ec255b0151f6570259af50399ae0 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Fri, 19 May 2023 05:43:16 +0200 Subject: [PATCH 29/45] Restore processing of isysroot --- scripts/cmake/vcpkg_configure_make.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index edf36dd3650e98..ec0b583e65f010 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -114,7 +114,7 @@ function(z_vcpkg_configure_make_process_flags var_suffix) vcpkg_list(APPEND pattern "${arg}") elseif(arg MATCHES "^--(sysroot|target)=.") vcpkg_list(SET pattern "${arg}") - elseif(arg MATCHES "^-(m?[Aa][Rr][Cc][Hh]|target)\$") + elseif(arg MATCHES "^-(m?[Aa][Rr][Cc][Hh]|isysroot|target)\$") vcpkg_list(SET pattern "${arg}") continue() else() From d5581de6756ef9e60f96c7bfc7fac6d873c9bae4 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Fri, 19 May 2023 05:47:46 +0200 Subject: [PATCH 30/45] [nettle] Fix assembler option --- ports/nettle/portfile.cmake | 2 +- versions/n-/nettle.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ports/nettle/portfile.cmake b/ports/nettle/portfile.cmake index 33a7cbda977b3c..c2ee414e45fa9f 100644 --- a/ports/nettle/portfile.cmake +++ b/ports/nettle/portfile.cmake @@ -67,7 +67,7 @@ endif() vcpkg_list(APPEND OPTIONS "CCAS=${ccas}" "ASMFLAGS=${asmflags}") if(disable_assembly) - vcpkg_list(APPEND OPTIONS "--disable-assembly") + vcpkg_list(APPEND OPTIONS "--disable-assembler") endif() if(VCPKG_CROSSCOMPILING) diff --git a/versions/n-/nettle.json b/versions/n-/nettle.json index 0605b8bf996d0d..deb48b00cef4d3 100644 --- a/versions/n-/nettle.json +++ b/versions/n-/nettle.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "61471e4f2845691e0f714bbdc15a90e4b882d073", + "git-tree": "fd52d3d5c505eb66d9789f63eefb782dfd77932d", "version": "3.8.1", "port-version": 2 }, From f00008645a920e57180c816261daa9a5cb64ba9d Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Fri, 19 May 2023 05:56:47 +0200 Subject: [PATCH 31/45] [liburing] Adjust --- ports/liburing/portfile.cmake | 2 +- ports/liburing/vcpkg.json | 2 +- versions/baseline.json | 2 +- versions/l-/liburing.json | 5 +++++ 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ports/liburing/portfile.cmake b/ports/liburing/portfile.cmake index 3d36e55c453093..092488673d5f3a 100644 --- a/ports/liburing/portfile.cmake +++ b/ports/liburing/portfile.cmake @@ -29,7 +29,7 @@ if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") "${CURRENT_PACKAGES_DIR}/lib/liburing.a" ) endif() -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/man") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/share/${PORT}/man2") file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/share/${PORT}/man3") file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/share/${PORT}/man7") diff --git a/ports/liburing/vcpkg.json b/ports/liburing/vcpkg.json index 704a64c1f892c6..bb161b12b02e15 100644 --- a/ports/liburing/vcpkg.json +++ b/ports/liburing/vcpkg.json @@ -1,7 +1,7 @@ { "name": "liburing", "version": "2.2", - "port-version": 2, + "port-version": 3, "description": "Linux-native io_uring I/O access library", "homepage": "https://github.com/axboe/liburing", "license": null, diff --git a/versions/baseline.json b/versions/baseline.json index dd78cbf9717db9..7e7e1ed06eb1f4 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -4634,7 +4634,7 @@ }, "liburing": { "baseline": "2.2", - "port-version": 2 + "port-version": 3 }, "libusb": { "baseline": "1.0.26.11791", diff --git a/versions/l-/liburing.json b/versions/l-/liburing.json index 7cf524347e2e5f..4635f9d28b6e71 100644 --- a/versions/l-/liburing.json +++ b/versions/l-/liburing.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "de9a2ceafa8723591381fc2e624680f27f712508", + "version": "2.2", + "port-version": 3 + }, { "git-tree": "92a2fd81331f9b6ad3119a166ed18159499fa403", "version": "2.2", From 9221c0928f6472a74d7fad89ce2dce990faf00e3 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 21 May 2023 11:31:04 +0200 Subject: [PATCH 32/45] Variable name changes --- scripts/cmake/vcpkg_configure_make.cmake | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index ec0b583e65f010..99c7c1f57daa9b 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -62,10 +62,10 @@ macro(z_vcpkg_determine_autotools_target_arch_mac out_var) endmacro() # Define variables used in both vcpkg_configure_make and vcpkg_build_make: -# short_name_: unique abbreviation for the given build type -# path_suffix_: installation path suffix for the given build type -# z_vcpkg_installed_path: CURRENT_INSTALLED_DIR with escaped space characters -# z_vcpkg_prefix_path: CURRENT_INSTALLED_DIR with unprotected spaces, but drive letters transformed for mingw/msys +# short_name_: unique abbreviation for the given build type (rel, dbg) +# path_suffix_: installation path suffix for the given build type ('', /debug) +# current_installed_dir_escaped: CURRENT_INSTALLED_DIR with escaped space characters +# current_installed_dir_msys: CURRENT_INSTALLED_DIR with unprotected spaces, but drive letters transformed for msys macro(z_vcpkg_configure_make_common_definitions) set(short_name_RELEASE "rel") set(short_name_DEBUG "dbg") @@ -75,11 +75,10 @@ macro(z_vcpkg_configure_make_common_definitions) # Some PATH handling for dealing with spaces....some tools will still fail with that! # In particular, the libtool install command is unable to install correctly to paths with spaces. - string(REPLACE " " "\\ " z_vcpkg_installed_path "${CURRENT_INSTALLED_DIR}") + string(REPLACE " " "\\ " current_installed_dir_escaped "${CURRENT_INSTALLED_DIR}") + set(current_installed_dir_msys "${CURRENT_INSTALLED_DIR}") if(CMAKE_HOST_WIN32) - string(REGEX REPLACE "([a-zA-Z]):/" "/\\1/" z_vcpkg_prefix_path "${CURRENT_INSTALLED_DIR}") - else() - set(z_vcpkg_prefix_path "${CURRENT_INSTALLED_DIR}") + string(REGEX REPLACE "^([a-zA-Z]):/" "/\\1/" current_installed_dir_msys "${current_installed_dir_msys}") endif() endmacro() @@ -220,10 +219,10 @@ function(z_vcpkg_configure_make_process_flags var_suffix) list(TRANSFORM LDFLAGS PREPEND "${linker_flag_escape}") endif() if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${var_suffix}}/lib/manual-link") - vcpkg_list(PREPEND LDFLAGS "${linker_flag_escape}${library_path_flag}${z_vcpkg_installed_path}${path_suffix_${var_suffix}}/lib/manual-link") + vcpkg_list(PREPEND LDFLAGS "${linker_flag_escape}${library_path_flag}${current_installed_dir_escaped}${path_suffix_${var_suffix}}/lib/manual-link") endif() if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${var_suffix}}/lib") - vcpkg_list(PREPEND LDFLAGS "${linker_flag_escape}${library_path_flag}${z_vcpkg_installed_path}${path_suffix_${var_suffix}}/lib") + vcpkg_list(PREPEND LDFLAGS "${linker_flag_escape}${library_path_flag}${current_installed_dir_escaped}${path_suffix_${var_suffix}}/lib") endif() if(ARFLAGS) @@ -627,8 +626,8 @@ function(vcpkg_configure_make) "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}") # Set configure paths - vcpkg_list(APPEND arg_OPTIONS_RELEASE "--prefix=${z_vcpkg_prefix_path}") - vcpkg_list(APPEND arg_OPTIONS_DEBUG "--prefix=${z_vcpkg_prefix_path}${path_suffix_DEBUG}") + vcpkg_list(APPEND arg_OPTIONS_RELEASE "--prefix=${current_installed_dir_msys}") + vcpkg_list(APPEND arg_OPTIONS_DEBUG "--prefix=${current_installed_dir_msys}${path_suffix_DEBUG}") if(NOT arg_NO_ADDITIONAL_PATHS) # ${prefix} has an extra backslash to prevent early expansion when calling `bash -c configure "..."`. vcpkg_list(APPEND arg_OPTIONS_RELEASE From ef09721b8b569626f88200bdb7ce30556985bdb4 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 21 May 2023 11:34:46 +0200 Subject: [PATCH 33/45] Remove redundant separate arguments --- scripts/cmake/vcpkg_configure_make.cmake | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index 99c7c1f57daa9b..3dc386eeaaa5d6 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -117,7 +117,7 @@ function(z_vcpkg_configure_make_process_flags var_suffix) vcpkg_list(SET pattern "${arg}") continue() else() - continue() + continue() endif() vcpkg_list(APPEND ABI_FLAGS ${pattern}) string(REPLACE ";${pattern};" ";" CFLAGS "${CFLAGS}") @@ -267,15 +267,6 @@ function(vcpkg_configure_make) debug_message("Including cmake vars from: ${cmake_vars_file}") include("${cmake_vars_file}") - # Remove outer quotes from cmake variables which will be forwarded via makefile/shell variables - # substituted into makefile commands (e.g. Android NDK has "--sysroot=...") - foreach(var IN ITEMS VCPKG_DETECTED_CMAKE_C_STANDARD_LIBRARIES - VCPKG_DETECTED_CMAKE_CXX_STANDARD_LIBRARIES - ) - separate_arguments(cmake_list NATIVE_COMMAND "${${var}}") - list(JOIN cmake_list " " "${var}") - endforeach() - if(DEFINED VCPKG_MAKE_BUILD_TRIPLET) set(arg_BUILD_TRIPLET ${VCPKG_MAKE_BUILD_TRIPLET}) # Triplet overwrite for crosscompiling endif() @@ -702,6 +693,8 @@ function(vcpkg_configure_make) endif() endif() + # Remove outer quotes from cmake variables which will be forwarded via makefile/shell variables + # substituted into makefile commands (e.g. Android NDK has "--sysroot=...") separate_arguments(c_libs_list NATIVE_COMMAND "${VCPKG_DETECTED_CMAKE_C_STANDARD_LIBRARIES}") separate_arguments(cxx_libs_list NATIVE_COMMAND "${VCPKG_DETECTED_CMAKE_CXX_STANDARD_LIBRARIES}") list(REMOVE_ITEM cxx_libs_list ${c_libs_list}) From 14043b0e753ab00f8466595bd9beef6e64910faa Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sat, 10 Jun 2023 12:30:36 +0200 Subject: [PATCH 34/45] Move -m32/-m64 to ABI flags --- scripts/cmake/vcpkg_configure_make.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index 784789c8385e71..54c991f26516bd 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -113,7 +113,7 @@ function(z_vcpkg_configure_make_process_flags var_suffix) vcpkg_list(APPEND pattern "${arg}") elseif(arg MATCHES "^--(sysroot|target)=.") vcpkg_list(SET pattern "${arg}") - elseif(arg MATCHES "^-(m?[Aa][Rr][Cc][Hh]|isysroot|target)\$") + elseif(arg MATCHES "^-(isysroot|m32|m64|m?[Aa][Rr][Cc][Hh]|target)\$") vcpkg_list(SET pattern "${arg}") continue() else() From 36304b8834f525bff12b6bee3d9cd0db4e700c96 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sat, 10 Jun 2023 12:36:51 +0200 Subject: [PATCH 35/45] Unify ABIFLAGS spelling --- scripts/cmake/vcpkg_configure_make.cmake | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index 54c991f26516bd..cf5e1bba12aefc 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -83,8 +83,8 @@ macro(z_vcpkg_configure_make_common_definitions) endmacro() # Initializes well-known and auxiliary variables for flags -# - ABI_FLAGS_: ABI flags which must be included in CC/CXX to satisfy both configure and libtool -# - CPPFLAGS_: preprocessor flags common to C and CXX +# - ABIFLAGS_: ABI flags which must be included in CC/CXX to satisfy both configure and libtool +# - CPPFLAGS_: preprocessor flags common to C and CXX # - CFLAGS_ # - CXXFLAGS_ # - LDFLAGS_ @@ -104,7 +104,7 @@ function(z_vcpkg_configure_make_process_flags var_suffix) set(z_vcm_all_flags "${z_vcm_all_flags}" PARENT_SCOPE) # Filter abi flags out of CFLAGS, CXXFLAGS and LDFLAGS - vcpkg_list(SET ABI_FLAGS) + vcpkg_list(SET ABIFLAGS) set(pattern "") foreach(arg IN LISTS CFLAGS) if(arg STREQUAL "Z_VCM_WRAP") @@ -119,7 +119,7 @@ function(z_vcpkg_configure_make_process_flags var_suffix) else() continue() endif() - vcpkg_list(APPEND ABI_FLAGS ${pattern}) + vcpkg_list(APPEND ABIFLAGS ${pattern}) string(REPLACE ";${pattern};" ";" CFLAGS "${CFLAGS}") string(REPLACE ";${pattern};" ";" CXXFLAGS "${CXXFLAGS}") string(REPLACE ";${pattern};" ";" LDFLAGS "${LDFLAGS}") @@ -232,7 +232,7 @@ function(z_vcpkg_configure_make_process_flags var_suffix) vcpkg_list(PREPEND ARFLAGS "cr") endif() - foreach(var IN ITEMS ABI_FLAGS CPPFLAGS CFLAGS CXXFLAGS LDFLAGS ARFLAGS) + foreach(var IN ITEMS ABIFLAGS CPPFLAGS CFLAGS CXXFLAGS LDFLAGS ARFLAGS) list(JOIN ${var} " " string) set(${var}_${var_suffix} "${string}" PARENT_SCOPE) endforeach() @@ -845,14 +845,14 @@ function(vcpkg_configure_make) set(ENV{ARFLAGS} "${ARFLAGS_${current_buildtype}}") endif() - # VCPKG_ABI_FLAGS isn't standard, but can be useful to reinject these flags into other variables - set(ENV{VCPKG_ABI_FLAGS} "${ABIFLAGS_${current_buildtype}}") - if(ABI_FLAGS_${current_buildtype}) + # VCPKG_ABIFLAGS isn't standard, but can be useful to reinject these flags into other variables + set(ENV{VCPKG_ABIFLAGS} "${ABIFLAGS_${current_buildtype}}") + if(ABIFLAGS_${current_buildtype}) # libtool removes some flags which are needed for configure tests. - set(ENV{CC} "$ENV{CC} ${ABI_FLAGS_${current_buildtype}}") - set(ENV{CXX} "$ENV{CXX} ${ABI_FLAGS_${current_buildtype}}") - set(ENV{CC_FOR_BUILD} "$ENV{CC_FOR_BUILD} ${ABI_FLAGS_${current_buildtype}}") - set(ENV{CXX_FOR_BUILD} "$ENV{CXX_FOR_BUILD} ${ABI_FLAGS_${current_buildtype}}") + set(ENV{CC} "$ENV{CC} ${ABIFLAGS_${current_buildtype}}") + set(ENV{CXX} "$ENV{CXX} ${ABIFLAGS_${current_buildtype}}") + set(ENV{CC_FOR_BUILD} "$ENV{CC_FOR_BUILD} ${ABIFLAGS_${current_buildtype}}") + set(ENV{CXX_FOR_BUILD} "$ENV{CXX_FOR_BUILD} ${ABIFLAGS_${current_buildtype}}") endif() if(LINK_ENV_${current_buildtype}) From 6cbd1387a2d8f408f12122fff44dd8fd5e2bd90d Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 11 Jun 2023 07:05:54 +0200 Subject: [PATCH 36/45] CI From e4e2ee6af622c1ba07cfcb20d5828cac7e20283d Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Fri, 16 Jun 2023 07:37:33 +0200 Subject: [PATCH 37/45] Revert VSCLANG --- ports/gmp/portfile.cmake | 4 ++-- ports/nettle/portfile.cmake | 4 ++-- .../vcpkg_find_acquire_program(VSCLANG).cmake | 21 ------------------- versions/g-/gmp.json | 2 +- versions/n-/nettle.json | 2 +- 5 files changed, 6 insertions(+), 27 deletions(-) delete mode 100644 scripts/cmake/vcpkg_find_acquire_program(VSCLANG).cmake diff --git a/ports/gmp/portfile.cmake b/ports/gmp/portfile.cmake index 9d86f783e528db..53d8b0d2559823 100644 --- a/ports/gmp/portfile.cmake +++ b/ports/gmp/portfile.cmake @@ -60,8 +60,8 @@ if(VCPKG_DETECTED_CMAKE_C_COMPILER_ID STREQUAL "MSVC") set(ccas ":") endif() if(NOT disable_assembly) - vcpkg_find_acquire_program(VSCLANG) - set(ccas "${VSCLANG}") + vcpkg_find_acquire_program(CLANG) + set(ccas "${CLANG}") if(ccas MATCHES " ") cmake_path(GET ccas PARENT_PATH ccas_dir) vcpkg_add_to_path(APPEND "${ccas_dir}") diff --git a/ports/nettle/portfile.cmake b/ports/nettle/portfile.cmake index c2ee414e45fa9f..d16585ce9e6a61 100644 --- a/ports/nettle/portfile.cmake +++ b/ports/nettle/portfile.cmake @@ -50,8 +50,8 @@ if(VCPKG_DETECTED_CMAKE_C_COMPILER_ID STREQUAL "MSVC") set(ccas ":") endif() if(NOT disable_assembly) - vcpkg_find_acquire_program(VSCLANG) - set(ccas "${VSCLANG}") + vcpkg_find_acquire_program(CLANG) + set(ccas "${CLANG}") if(ccas MATCHES " ") cmake_path(GET ccas PARENT_PATH ccas_dir) vcpkg_add_to_path(APPEND "${ccas_dir}") diff --git a/scripts/cmake/vcpkg_find_acquire_program(VSCLANG).cmake b/scripts/cmake/vcpkg_find_acquire_program(VSCLANG).cmake deleted file mode 100644 index 76b21d23bc4afd..00000000000000 --- a/scripts/cmake/vcpkg_find_acquire_program(VSCLANG).cmake +++ /dev/null @@ -1,21 +0,0 @@ -if(NOT CMAKE_HOST_WIN32) - message(FATAL_ERROR "Visual Studio is only supported on Windows hosts.") -endif() - -set(program_name "clang") -set(paths_to_search - # LLVM in Visual Studio - "$ENV{LLVMInstallDir}/x64/bin" - "$ENV{LLVMInstallDir}/bin" - "$ENV{VCINSTALLDIR}/Tools/Llvm/x64/bin" - "$ENV{VCINSTALLDIR}/Tools/Llvm/bin" -) -find_program(VSCLANG - NAMES clang - PATHS ${paths_to_search} - NO_DEFAULT_PATH -) -if(NOT VSCLANG) - list(JOIN paths_to_search "\n " paths) - message(FATAL_ERROR "Failed to find Visual Studio's clang in:\n ${paths}") -endif() diff --git a/versions/g-/gmp.json b/versions/g-/gmp.json index 8d557a4b3bb097..68dcf5a0c5b1c6 100644 --- a/versions/g-/gmp.json +++ b/versions/g-/gmp.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "4a7a53b873460cea9d6faa3fd26f3691f30ce81c", + "git-tree": "2ecb818cf415140682bc890a137f8ced9c169451", "version": "6.2.1", "port-version": 19 }, diff --git a/versions/n-/nettle.json b/versions/n-/nettle.json index deb48b00cef4d3..be87e09a925921 100644 --- a/versions/n-/nettle.json +++ b/versions/n-/nettle.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "fd52d3d5c505eb66d9789f63eefb782dfd77932d", + "git-tree": "7828fb7de698bd39c0ee1f8cff76953ba59dccc6", "version": "3.8.1", "port-version": 2 }, From 6cd7c74ec4e7a2311b7b7bccc7db702a32139b17 Mon Sep 17 00:00:00 2001 From: "Schaich, Alonso" Date: Thu, 29 Jun 2023 03:24:21 +0900 Subject: [PATCH 38/45] Use GNU Make to build autotools ports on FreeBSD (microsoft/vcpkg#32282) --- scripts/cmake/vcpkg_build_make.cmake | 2 +- scripts/cmake/vcpkg_configure_make.cmake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/cmake/vcpkg_build_make.cmake b/scripts/cmake/vcpkg_build_make.cmake index 9944f490217c77..b2a26d74792315 100644 --- a/scripts/cmake/vcpkg_build_make.cmake +++ b/scripts/cmake/vcpkg_build_make.cmake @@ -55,7 +55,7 @@ function(vcpkg_build_make) #TODO: optimize for install-data (release) and install-exec (release/debug) else() - if(VCPKG_HOST_IS_OPENBSD) + if(VCPKG_HOST_IS_FREEBSD OR VCPKG_HOST_IS_OPENBSD) find_program(Z_VCPKG_MAKE gmake REQUIRED) else() find_program(Z_VCPKG_MAKE make REQUIRED) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index cf5e1bba12aefc..9c66fa2282029a 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -919,7 +919,7 @@ function(vcpkg_configure_make) # Export matching make program for vcpkg_build_make (cache variable) if(CMAKE_HOST_WIN32 AND MSYS_ROOT) find_program(Z_VCPKG_MAKE make PATHS "${MSYS_ROOT}/usr/bin" NO_DEFAULT_PATH REQUIRED) - elseif(VCPKG_HOST_IS_OPENBSD) + elseif(VCPKG_HOST_IS_FREEBSD OR VCPKG_HOST_IS_OPENBSD) find_program(Z_VCPKG_MAKE gmake REQUIRED) else() find_program(Z_VCPKG_MAKE make REQUIRED) From bad5007c70bdb348ea78fd8bd7ef92e691b316ce Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sat, 23 Dec 2023 19:50:26 +0100 Subject: [PATCH 39/45] Fix flag removal --- scripts/cmake/vcpkg_configure_make.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index 4b6bd82d5a406c..39179426d2a830 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -142,7 +142,7 @@ function(z_vcpkg_configure_make_process_flags var_suffix) else() continue() endif() - string(FIND "${CFLAGS}" "${pattern} " index) + string(FIND "${CFLAGS}" ";${pattern};" index) if(NOT index STREQUAL "-1") vcpkg_list(APPEND CPPFLAGS ${pattern}) string(REPLACE ";${pattern};" ";" CFLAGS "${CFLAGS}") @@ -165,7 +165,7 @@ function(z_vcpkg_configure_make_process_flags var_suffix) else() continue() endif() - string(FIND "${CXXFLAGS}" "${pattern} " index) + string(FIND "${CXXFLAGS}" ";${pattern};" index) if(NOT index STREQUAL "-1") vcpkg_list(APPEND CPPFLAGS ${pattern}) string(REPLACE ";${pattern};" ";" CFLAGS "${CFLAGS}") From 7d3f3c9c49e772b8f794aa5989c41415e71057d1 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sat, 23 Dec 2023 19:50:51 +0100 Subject: [PATCH 40/45] Drop separation of ABI flags --- scripts/cmake/vcpkg_build_make.cmake | 3 -- scripts/cmake/vcpkg_configure_make.cmake | 54 ++++++------------------ 2 files changed, 14 insertions(+), 43 deletions(-) diff --git a/scripts/cmake/vcpkg_build_make.cmake b/scripts/cmake/vcpkg_build_make.cmake index b2a26d74792315..56bae7a760f664 100644 --- a/scripts/cmake/vcpkg_build_make.cmake +++ b/scripts/cmake/vcpkg_build_make.cmake @@ -103,9 +103,6 @@ function(vcpkg_build_make) endforeach() unset(lib_env_vars) - # VCPKG_ABI_FLAGS isn't standard, but can be useful to reinject these flags into other variables - set(ENV{VCPKG_ABI_FLAGS} "${ABIFLAGS_${current_buildtype}}") - if(LINK_ENV_${cmake_buildtype}) set(config_link_backup "$ENV{_LINK_}") set(ENV{_LINK_} "${LINK_ENV_${cmake_buildtype}}") diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index 39179426d2a830..5738adde5a8aeb 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -83,7 +83,6 @@ macro(z_vcpkg_configure_make_common_definitions) endmacro() # Initializes well-known and auxiliary variables for flags -# - ABIFLAGS_: ABI flags which must be included in CC/CXX to satisfy both configure and libtool # - CPPFLAGS_: preprocessor flags common to C and CXX # - CFLAGS_ # - CXXFLAGS_ @@ -92,40 +91,17 @@ endmacro() # - LINK_ENV_${var_suffix} # Prerequisite: VCPKG_DETECTED_CMAKE_... vars loaded function(z_vcpkg_configure_make_process_flags var_suffix) - # separate_aruments is needed to remove outer quotes from detected cmake variables. + # separate_arguments is needed to remove outer quotes from detected cmake variables. # (e.g. Android NDK has "--sysroot=...") separate_arguments(CFLAGS NATIVE_COMMAND "Z_VCM_WRAP ${VCPKG_DETECTED_CMAKE_C_FLAGS_${var_suffix}} Z_VCM_WRAP") separate_arguments(CXXFLAGS NATIVE_COMMAND "Z_VCM_WRAP ${VCPKG_DETECTED_CMAKE_CXX_FLAGS_${var_suffix}} Z_VCM_WRAP") - separate_arguments(LDFLAGS NATIVE_COMMAND "Z_VCM_WRAP ${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}} Z_VCM_WRAP") + separate_arguments(LDFLAGS NATIVE_COMMAND "${VCPKG_DETECTED_CMAKE_SHARED_LINKER_FLAGS_${var_suffix}}") separate_arguments(ARFLAGS NATIVE_COMMAND "${VCPKG_DETECTED_CMAKE_STATIC_LINKER_FLAGS_${var_suffix}}") foreach(var IN ITEMS CFLAGS CXXFLAGS LDFLAGS ARFLAGS) vcpkg_list(APPEND z_vcm_all_flags ${${var}}) endforeach() set(z_vcm_all_flags "${z_vcm_all_flags}" PARENT_SCOPE) - # Filter abi flags out of CFLAGS, CXXFLAGS and LDFLAGS - vcpkg_list(SET ABIFLAGS) - set(pattern "") - foreach(arg IN LISTS CFLAGS) - if(arg STREQUAL "Z_VCM_WRAP") - continue() - elseif(NOT pattern STREQUAL "") - vcpkg_list(APPEND pattern "${arg}") - elseif(arg MATCHES "^--(sysroot|target)=.") - vcpkg_list(SET pattern "${arg}") - elseif(arg MATCHES "^-(isysroot|m32|m64|m?[Aa][Rr][Cc][Hh]|target)\$") - vcpkg_list(SET pattern "${arg}") - continue() - else() - continue() - endif() - vcpkg_list(APPEND ABIFLAGS ${pattern}) - string(REPLACE ";${pattern};" ";" CFLAGS "${CFLAGS}") - string(REPLACE ";${pattern};" ";" CXXFLAGS "${CXXFLAGS}") - string(REPLACE ";${pattern};" ";" LDFLAGS "${LDFLAGS}") - set(pattern "") - endforeach() - # Filter common CPPFLAGS out of CFLAGS and CXXFLAGS vcpkg_list(SET CPPFLAGS) vcpkg_list(SET pattern) @@ -139,6 +115,11 @@ function(z_vcpkg_configure_make_process_flags var_suffix) elseif(arg MATCHES "^-(D|isystem)\$") vcpkg_list(SET pattern "${arg}") continue() + elseif(arg MATCHES "^--(sysroot|target)=.") + vcpkg_list(SET pattern "${arg}") + elseif(arg MATCHES "^-(isysroot|m32|m64|m?[Aa][Rr][Cc][Hh]|target)\$") + vcpkg_list(SET pattern "${arg}") + continue() else() continue() endif() @@ -147,7 +128,6 @@ function(z_vcpkg_configure_make_process_flags var_suffix) vcpkg_list(APPEND CPPFLAGS ${pattern}) string(REPLACE ";${pattern};" ";" CFLAGS "${CFLAGS}") string(REPLACE ";${pattern};" ";" CXXFLAGS "${CXXFLAGS}") - string(REPLACE ";${pattern};" ";" LDFLAGS "${LDFLAGS}") endif() vcpkg_list(SET pattern) endforeach() @@ -162,6 +142,11 @@ function(z_vcpkg_configure_make_process_flags var_suffix) continue() elseif(arg MATCHES "^-(D|isystem).") vcpkg_list(SET pattern "${arg}") + elseif(arg MATCHES "^--(sysroot|target)=.") + vcpkg_list(SET pattern "${arg}") + elseif(arg MATCHES "^-(isysroot|m32|m64|m?[Aa][Rr][Cc][Hh]|target)\$") + vcpkg_list(SET pattern "${arg}") + continue() else() continue() endif() @@ -170,13 +155,12 @@ function(z_vcpkg_configure_make_process_flags var_suffix) vcpkg_list(APPEND CPPFLAGS ${pattern}) string(REPLACE ";${pattern};" ";" CFLAGS "${CFLAGS}") string(REPLACE ";${pattern};" ";" CXXFLAGS "${CXXFLAGS}") - string(REPLACE ";${pattern};" ";" LDFLAGS "${LDFLAGS}") endif() vcpkg_list(SET pattern) endforeach() # Remove start/end placeholders - foreach(list IN ITEMS CFLAGS CXXFLAGS LDFLAGS) + foreach(list IN ITEMS CFLAGS CXXFLAGS) vcpkg_list(REMOVE_ITEM ${list} "Z_VCM_WRAP") endforeach() @@ -232,7 +216,7 @@ function(z_vcpkg_configure_make_process_flags var_suffix) vcpkg_list(PREPEND ARFLAGS "cr") endif() - foreach(var IN ITEMS ABIFLAGS CPPFLAGS CFLAGS CXXFLAGS LDFLAGS ARFLAGS) + foreach(var IN ITEMS CPPFLAGS CFLAGS CXXFLAGS LDFLAGS ARFLAGS) list(JOIN ${var} " " string) set(${var}_${var_suffix} "${string}" PARENT_SCOPE) endforeach() @@ -844,16 +828,6 @@ function(vcpkg_configure_make) set(ENV{ARFLAGS} "${ARFLAGS_${current_buildtype}}") endif() - # VCPKG_ABIFLAGS isn't standard, but can be useful to reinject these flags into other variables - set(ENV{VCPKG_ABIFLAGS} "${ABIFLAGS_${current_buildtype}}") - if(ABIFLAGS_${current_buildtype}) - # libtool removes some flags which are needed for configure tests. - set(ENV{CC} "$ENV{CC} ${ABIFLAGS_${current_buildtype}}") - set(ENV{CXX} "$ENV{CXX} ${ABIFLAGS_${current_buildtype}}") - set(ENV{CC_FOR_BUILD} "$ENV{CC_FOR_BUILD} ${ABIFLAGS_${current_buildtype}}") - set(ENV{CXX_FOR_BUILD} "$ENV{CXX_FOR_BUILD} ${ABIFLAGS_${current_buildtype}}") - endif() - if(LINK_ENV_${current_buildtype}) set(link_config_backup "$ENV{_LINK_}") set(ENV{_LINK_} "${LINK_ENV_${current_buildtype}}") From 8a64d8bd470ebde444218f1db0b5567bfa1aea26 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 24 Dec 2023 09:47:51 +0100 Subject: [PATCH 41/45] Handle '-arch=...' --- scripts/cmake/vcpkg_configure_make.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index 5738adde5a8aeb..81088e48bbb38a 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -115,7 +115,7 @@ function(z_vcpkg_configure_make_process_flags var_suffix) elseif(arg MATCHES "^-(D|isystem)\$") vcpkg_list(SET pattern "${arg}") continue() - elseif(arg MATCHES "^--(sysroot|target)=.") + elseif(arg MATCHES "^-(-sysroot|-target|m?[Aa][Rr][Cc][Hh])=.") vcpkg_list(SET pattern "${arg}") elseif(arg MATCHES "^-(isysroot|m32|m64|m?[Aa][Rr][Cc][Hh]|target)\$") vcpkg_list(SET pattern "${arg}") @@ -142,7 +142,7 @@ function(z_vcpkg_configure_make_process_flags var_suffix) continue() elseif(arg MATCHES "^-(D|isystem).") vcpkg_list(SET pattern "${arg}") - elseif(arg MATCHES "^--(sysroot|target)=.") + elseif(arg MATCHES "^-(-sysroot|-target|m?[Aa][Rr][Cc][Hh])=.") vcpkg_list(SET pattern "${arg}") elseif(arg MATCHES "^-(isysroot|m32|m64|m?[Aa][Rr][Cc][Hh]|target)\$") vcpkg_list(SET pattern "${arg}") From 8ff9e76026d74879b2c1b6eee330f71e549f452e Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 24 Dec 2023 11:29:56 +0100 Subject: [PATCH 42/45] Revert "Control docdir and mandir for debug" This reverts commit d8293a199745ced3e8e77a274ebe2005d9a213be. --- scripts/cmake/vcpkg_configure_make.cmake | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index 81088e48bbb38a..9dcb9953801459 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -619,8 +619,6 @@ function(vcpkg_configure_make) "--sbindir=\\\${prefix}/../tools/${PORT}${path_suffix_DEBUG}/sbin" "--libdir=\\\${prefix}/lib" # On some Linux distributions lib64 is the default "--includedir=\\\${prefix}/../include" - "--mandir=\\\${prefix}/share/${PORT}" - "--docdir=\\\${prefix}/share/${PORT}" "--datarootdir=\\\${prefix}/share/${PORT}") endif() # Setup common options From f8ed916f20f862c4720ecd89ebce95c3a690922b Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 24 Dec 2023 14:02:06 +0100 Subject: [PATCH 43/45] [icu] Pass uwp option to pkgdata --- ports/icu/portfile.cmake | 1 + ports/icu/vcpkg.json | 1 + versions/baseline.json | 2 +- versions/i-/icu.json | 5 +++++ 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ports/icu/portfile.cmake b/ports/icu/portfile.cmake index 0beaa236228593..352a81c74ced48 100644 --- a/ports/icu/portfile.cmake +++ b/ports/icu/portfile.cmake @@ -36,6 +36,7 @@ elseif(VCPKG_TARGET_IS_UWP) vcpkg_list(APPEND CONFIGURE_OPTIONS --disable-extras ac_cv_func_tzset=no ac_cv_func__tzset=no) string(APPEND VCPKG_C_FLAGS " -DU_PLATFORM_HAS_WINUWP_API=1") string(APPEND VCPKG_CXX_FLAGS " -DU_PLATFORM_HAS_WINUWP_API=1") + vcpkg_list(APPEND BUILD_OPTIONS "PKGDATA_OPTS=--windows-uwp-build -O ../data/icupkg.inc") elseif(VCPKG_TARGET_IS_OSX AND VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") vcpkg_list(APPEND CONFIGURE_OPTIONS --enable-rpath) if(DEFINED CMAKE_INSTALL_NAME_DIR) diff --git a/ports/icu/vcpkg.json b/ports/icu/vcpkg.json index 441d2be0b75b5e..8fe00137a8ef05 100644 --- a/ports/icu/vcpkg.json +++ b/ports/icu/vcpkg.json @@ -1,6 +1,7 @@ { "name": "icu", "version": "74.1", + "port-version": 1, "description": "Mature and widely used Unicode and localization library.", "homepage": "https://icu.unicode.org/home", "license": "ICU", diff --git a/versions/baseline.json b/versions/baseline.json index d2de4687c4c50e..399998e870eb4e 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -3386,7 +3386,7 @@ }, "icu": { "baseline": "74.1", - "port-version": 0 + "port-version": 1 }, "ideviceinstaller": { "baseline": "2023-07-21", diff --git a/versions/i-/icu.json b/versions/i-/icu.json index 9c091e0df39f21..69924c9675b1b5 100644 --- a/versions/i-/icu.json +++ b/versions/i-/icu.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "8fda8f4d0ca5b0a97ac61432d85ad0449995a763", + "version": "74.1", + "port-version": 1 + }, { "git-tree": "0a6f5ea29d6445c8af30f19952c62cc5dd5e2a5b", "version": "74.1", From 37108e255e4d7fa12ddbdad4e1192b001dea323b Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Mon, 25 Dec 2023 15:15:09 +0100 Subject: [PATCH 44/45] Restore old osx flags hook --- scripts/cmake/vcpkg_configure_make.cmake | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index 9dcb9953801459..ca15f182c20ec7 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -826,6 +826,12 @@ function(vcpkg_configure_make) set(ENV{ARFLAGS} "${ARFLAGS_${current_buildtype}}") endif() + if(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_IOS) + # configure not using all flags to check if compiler works ... + set(ENV{CC} "$ENV{CC} $ENV{CPPFLAGS} $ENV{CFLAGS}") + set(ENV{CC_FOR_BUILD} "$ENV{CC_FOR_BUILD} $ENV{CPPFLAGS} $ENV{CFLAGS}") + endif() + if(LINK_ENV_${current_buildtype}) set(link_config_backup "$ENV{_LINK_}") set(ENV{_LINK_} "${LINK_ENV_${current_buildtype}}") From aca7914cac6b5c0c1e10214e04cb754b02e9c757 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Thu, 28 Dec 2023 11:20:23 +0100 Subject: [PATCH 45/45] Add triplet variable to make libtool pass --target to linker --- scripts/cmake/vcpkg_build_make.cmake | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/scripts/cmake/vcpkg_build_make.cmake b/scripts/cmake/vcpkg_build_make.cmake index 56bae7a760f664..ddf56f4f6e01de 100644 --- a/scripts/cmake/vcpkg_build_make.cmake +++ b/scripts/cmake/vcpkg_build_make.cmake @@ -84,6 +84,14 @@ function(vcpkg_build_make) set(working_directory "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${short_buildtype}/${arg_SUBPATH}") message(STATUS "Building ${TARGET_TRIPLET}-${short_buildtype}") + if("libtool-link-pass-target" IN_LIST VCPKG_BUILD_MAKE_FIXUP) + # Pass --target to the linker, e.g. for Android + file(GLOB_RECURSE libtool_files "${working_directory}/libtool") + foreach(file IN LISTS libtool_files) + vcpkg_replace_string("${file}" [[-xtarget=*|]] [[-xtarget=*|--target=*|]]) + endforeach() + endif() + z_vcpkg_configure_make_process_flags("${cmake_buildtype}") # Setup environment