From 26037cf5ae53dbfd55d6eaaf9e4c6dcd2a33e36c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Thu, 13 Jan 2022 08:17:28 +0100 Subject: [PATCH 1/7] [vcpkg_build_make] only link against manual-link folder if exists --- scripts/cmake/vcpkg_build_make.cmake | 27 ++++++++++++++++++------ scripts/cmake/vcpkg_configure_make.cmake | 2 +- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/scripts/cmake/vcpkg_build_make.cmake b/scripts/cmake/vcpkg_build_make.cmake index 787471e19d145c..7622f682192904 100755 --- a/scripts/cmake/vcpkg_build_make.cmake +++ b/scripts/cmake/vcpkg_build_make.cmake @@ -147,10 +147,18 @@ function(vcpkg_build_make) set(LINKER_FLAGS_${cmake_buildtype} "${VCPKG_DETECTED_SHARED_LINKER_FLAGS_${cmake_buildtype}}") endif() if (CMAKE_HOST_WIN32 AND VCPKG_DETECTED_CMAKE_C_COMPILER MATCHES "cl.exe") - set(LDFLAGS_${cmake_buildtype} "-L${Z_VCPKG_INSTALLED}${path_suffix}/lib -L${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link") + if(EXISTS "${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link") + set(LDFLAGS_${cmake_buildtype} "-L${Z_VCPKG_INSTALLED}${path_suffix}/lib -L${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link") + else() + set(LDFLAGS_${cmake_buildtype} "-L${Z_VCPKG_INSTALLED}${path_suffix}/lib") + endif() set(LINK_ENV_${cmake_buildtype} "$ENV{_LINK_} ${LINKER_FLAGS_${cmake_buildtype}}") else() - set(LDFLAGS_${cmake_buildtype} "-L${Z_VCPKG_INSTALLED}${path_suffix}/lib -L${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link ${LINKER_FLAGS_${cmake_buildtype}}") + if(EXISTS "${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link") + set(LDFLAGS_${cmake_buildtype} "-L${Z_VCPKG_INSTALLED}${path_suffix}/lib -L${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link ${LINKER_FLAGS_${cmake_buildtype}}") + else() + set(LDFLAGS_${cmake_buildtype} "-L${Z_VCPKG_INSTALLED}${path_suffix}/lib ${LINKER_FLAGS_${cmake_buildtype}}") + endif() endif() # Setup environment @@ -159,10 +167,17 @@ function(vcpkg_build_make) set(ENV{CXXFLAGS} "${CXXFLAGS_${cmake_buildtype}}") set(ENV{RCFLAGS} "${VCPKG_DETECTED_CMAKE_RC_FLAGS_${cmake_buildtype}}") set(ENV{LDFLAGS} "${LDFLAGS_${cmake_buildtype}}") - vcpkg_host_path_list(PREPEND ENV{LIB} "${Z_VCPKG_INSTALLED}${path_suffix}/lib/" "${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link/") - vcpkg_host_path_list(PREPEND ENV{LIBPATH} "${Z_VCPKG_INSTALLED}${path_suffix}/lib/" "${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link/") - vcpkg_host_path_list(PREPEND ENV{LIBRARY_PATH} "${Z_VCPKG_INSTALLED}${path_suffix_${buildtype}}/lib/" "${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link/") - #vcpkg_host_path_list(PREPEND ENV{LD_LIBRARY_PATH} "${Z_VCPKG_INSTALLED}${path_suffix}/lib/" "${Z_VCPKG_INSTALLED}${path_suffix_${buildtype}}/lib/manual-link/") + if(EXISTS "${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link") + vcpkg_host_path_list(PREPEND ENV{LIB} "${Z_VCPKG_INSTALLED}${path_suffix}/lib/" "${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link/") + vcpkg_host_path_list(PREPEND ENV{LIBPATH} "${Z_VCPKG_INSTALLED}${path_suffix}/lib/" "${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link/") + vcpkg_host_path_list(PREPEND ENV{LIBRARY_PATH} "${Z_VCPKG_INSTALLED}${path_suffix_${buildtype}}/lib/" "${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link/") + #vcpkg_host_path_list(PREPEND ENV{LD_LIBRARY_PATH} "${Z_VCPKG_INSTALLED}${path_suffix}/lib/" "${Z_VCPKG_INSTALLED}${path_suffix_${buildtype}}/lib/manual-link/") + else() + vcpkg_host_path_list(PREPEND ENV{LIB} "${Z_VCPKG_INSTALLED}${path_suffix}/lib/") + vcpkg_host_path_list(PREPEND ENV{LIBPATH} "${Z_VCPKG_INSTALLED}${path_suffix}/lib/") + vcpkg_host_path_list(PREPEND ENV{LIBRARY_PATH} "${Z_VCPKG_INSTALLED}${path_suffix_${buildtype}}/lib/") + #vcpkg_host_path_list(PREPEND ENV{LD_LIBRARY_PATH} "${Z_VCPKG_INSTALLED}${path_suffix}/lib/") + endif() if(LINK_ENV_${_VAR_SUFFIX}) set(config_link_backup "$ENV{_LINK_}") diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index aa054222c7dedc..40406ecdfb1030 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -779,7 +779,7 @@ function(vcpkg_configure_make) vcpkg_host_path_list(PREPEND ENV{${lib_env_var}} "${CURRENT_INSTALLED_DIR}${path_suffix_${current_buildtype}}/lib") endif() if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${current_buildtype}}/lib/manual-link") - vcpkg_host_path_list(PREPEND ENV{${lib_env_var}} "${CURRENT_INSTALLED_DIR}" "${path_suffix_${current_buildtype}}/lib/manual-link") + vcpkg_host_path_list(PREPEND ENV{${lib_env_var}} "${CURRENT_INSTALLED_DIR}${path_suffix_${current_buildtype}}/lib/manual-link") endif() endforeach() unset(lib_env_vars) From 3cf63c44ec59d6640e544e1a5b27d8a8e8ff3f22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Fri, 14 Jan 2022 10:02:32 +0100 Subject: [PATCH 2/7] [vcpkg_configure_make] don't set LD_LIBRARY_PATH This is not recommended during the normal build process https://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html --- 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 40406ecdfb1030..02972f8d62d3d0 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -773,7 +773,7 @@ function(vcpkg_configure_make) endif() set(ENV{PKG_CONFIG} "${PKGCONFIG}") - vcpkg_list(APPEND lib_env_vars LIB LIBPATH LIBRARY_PATH LD_LIBRARY_PATH) + vcpkg_list(APPEND lib_env_vars LIB LIBPATH LIBRARY_PATH) # LD_LIBRARY_PATH) foreach(lib_env_var IN LISTS lib_env_vars) if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${current_buildtype}}/lib") vcpkg_host_path_list(PREPEND ENV{${lib_env_var}} "${CURRENT_INSTALLED_DIR}${path_suffix_${current_buildtype}}/lib") From 78f9ffbfe4338461b5b373c3eaf20e50c94ec9c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Fri, 14 Jan 2022 10:03:24 +0100 Subject: [PATCH 3/7] [vcpkg_build_make] Only set the lib path if exists --- scripts/cmake/vcpkg_build_make.cmake | 46 +++++++++++++--------------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/scripts/cmake/vcpkg_build_make.cmake b/scripts/cmake/vcpkg_build_make.cmake index 7622f682192904..ceefcc5be9d1cf 100755 --- a/scripts/cmake/vcpkg_build_make.cmake +++ b/scripts/cmake/vcpkg_build_make.cmake @@ -146,19 +146,18 @@ function(vcpkg_build_make) else() # dynamic set(LINKER_FLAGS_${cmake_buildtype} "${VCPKG_DETECTED_SHARED_LINKER_FLAGS_${cmake_buildtype}}") endif() - if (CMAKE_HOST_WIN32 AND VCPKG_DETECTED_CMAKE_C_COMPILER MATCHES "cl.exe") - if(EXISTS "${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link") - set(LDFLAGS_${cmake_buildtype} "-L${Z_VCPKG_INSTALLED}${path_suffix}/lib -L${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link") - else() - set(LDFLAGS_${cmake_buildtype} "-L${Z_VCPKG_INSTALLED}${path_suffix}/lib") - endif() - set(LINK_ENV_${cmake_buildtype} "$ENV{_LINK_} ${LINKER_FLAGS_${cmake_buildtype}}") - else() - if(EXISTS "${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link") - set(LDFLAGS_${cmake_buildtype} "-L${Z_VCPKG_INSTALLED}${path_suffix}/lib -L${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link ${LINKER_FLAGS_${cmake_buildtype}}") - else() - set(LDFLAGS_${cmake_buildtype} "-L${Z_VCPKG_INSTALLED}${path_suffix}/lib ${LINKER_FLAGS_${cmake_buildtype}}") - endif() + set(LDFLAGS_${cmake_buildtype} "") + if(EXISTS "${Z_VCPKG_INSTALLED}${path_suffix}/lib") + set(LDFLAGS_${cmake_buildtype} "${LDFLAGS_${cmake_buildtype}} -L${Z_VCPKG_INSTALLED}${path_suffix}/lib") + endif() + if(EXISTS "${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link") + set(LDFLAGS_${cmake_buildtype} "${LDFLAGS_${cmake_buildtype}} -L${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link") + endif() + if(EXISTS "${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link") + vcpkg_host_path_list(PREPEND ENV{${lib_env_var}} "${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link") + endif() + if(EXISTS "${Z_VCPKG_INSTALLED}${path_suffix}/lib") + vcpkg_host_path_list(PREPEND ENV{${lib_env_var}} "${Z_VCPKG_INSTALLED}${path_suffix}/lib") endif() # Setup environment @@ -167,17 +166,16 @@ function(vcpkg_build_make) set(ENV{CXXFLAGS} "${CXXFLAGS_${cmake_buildtype}}") set(ENV{RCFLAGS} "${VCPKG_DETECTED_CMAKE_RC_FLAGS_${cmake_buildtype}}") set(ENV{LDFLAGS} "${LDFLAGS_${cmake_buildtype}}") - if(EXISTS "${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link") - vcpkg_host_path_list(PREPEND ENV{LIB} "${Z_VCPKG_INSTALLED}${path_suffix}/lib/" "${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link/") - vcpkg_host_path_list(PREPEND ENV{LIBPATH} "${Z_VCPKG_INSTALLED}${path_suffix}/lib/" "${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link/") - vcpkg_host_path_list(PREPEND ENV{LIBRARY_PATH} "${Z_VCPKG_INSTALLED}${path_suffix_${buildtype}}/lib/" "${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link/") - #vcpkg_host_path_list(PREPEND ENV{LD_LIBRARY_PATH} "${Z_VCPKG_INSTALLED}${path_suffix}/lib/" "${Z_VCPKG_INSTALLED}${path_suffix_${buildtype}}/lib/manual-link/") - else() - vcpkg_host_path_list(PREPEND ENV{LIB} "${Z_VCPKG_INSTALLED}${path_suffix}/lib/") - vcpkg_host_path_list(PREPEND ENV{LIBPATH} "${Z_VCPKG_INSTALLED}${path_suffix}/lib/") - vcpkg_host_path_list(PREPEND ENV{LIBRARY_PATH} "${Z_VCPKG_INSTALLED}${path_suffix_${buildtype}}/lib/") - #vcpkg_host_path_list(PREPEND ENV{LD_LIBRARY_PATH} "${Z_VCPKG_INSTALLED}${path_suffix}/lib/") - endif() + vcpkg_list(APPEND lib_env_vars LIB LIBPATH LIBRARY_PATH) # LD_LIBRARY_PATH) + foreach(lib_env_var IN LISTS lib_env_vars) + if(EXISTS "${Z_VCPKG_INSTALLED}${path_suffix}/lib") + vcpkg_host_path_list(PREPEND ENV{${lib_env_var}} "${Z_VCPKG_INSTALLED}${path_suffix}/lib") + endif() + if(EXISTS "${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link") + vcpkg_host_path_list(PREPEND ENV{${lib_env_var}} "${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link") + endif() + endforeach() + unset(lib_env_vars) if(LINK_ENV_${_VAR_SUFFIX}) set(config_link_backup "$ENV{_LINK_}") From 7bb3c1dc5a348caf967800ba0a5882f408168fc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Fri, 28 Jan 2022 15:45:33 +0100 Subject: [PATCH 4/7] [vcpkg_configure_make] Resore handling of _LINK_ environment variable --- scripts/cmake/vcpkg_build_make.cmake | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/scripts/cmake/vcpkg_build_make.cmake b/scripts/cmake/vcpkg_build_make.cmake index ceefcc5be9d1cf..ba8793cd7c7481 100755 --- a/scripts/cmake/vcpkg_build_make.cmake +++ b/scripts/cmake/vcpkg_build_make.cmake @@ -145,19 +145,18 @@ function(vcpkg_build_make) set(LINKER_FLAGS_${cmake_buildtype} "${VCPKG_DETECTED_STATIC_LINKER_FLAGS_${cmake_buildtype}}") else() # dynamic set(LINKER_FLAGS_${cmake_buildtype} "${VCPKG_DETECTED_SHARED_LINKER_FLAGS_${cmake_buildtype}}") - endif() + endif() set(LDFLAGS_${cmake_buildtype} "") if(EXISTS "${Z_VCPKG_INSTALLED}${path_suffix}/lib") - set(LDFLAGS_${cmake_buildtype} "${LDFLAGS_${cmake_buildtype}} -L${Z_VCPKG_INSTALLED}${path_suffix}/lib") - endif() - if(EXISTS "${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link") - set(LDFLAGS_${cmake_buildtype} "${LDFLAGS_${cmake_buildtype}} -L${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link") + string(APPEND LDFLAGS_${cmake_buildtype} " -L${Z_VCPKG_INSTALLED}${path_suffix}/lib") endif() if(EXISTS "${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link") - vcpkg_host_path_list(PREPEND ENV{${lib_env_var}} "${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link") + string(APPEND LDFLAGS_${cmake_buildtype} " -L${Z_VCPKG_INSTALLED}${path_suffix}/lib/manual-link") endif() - if(EXISTS "${Z_VCPKG_INSTALLED}${path_suffix}/lib") - vcpkg_host_path_list(PREPEND ENV{${lib_env_var}} "${Z_VCPKG_INSTALLED}${path_suffix}/lib") + 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 From 63dc48f9b99b9ea428ce2dabf5d03d64a0027591 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Fri, 28 Jan 2022 15:49:37 +0100 Subject: [PATCH 5/7] [vcpkg_build_make] Backup and restore CPPFLAGS CFLAGS CXXFLAGS RCFLAGS --- scripts/cmake/vcpkg_build_make.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/cmake/vcpkg_build_make.cmake b/scripts/cmake/vcpkg_build_make.cmake index ba8793cd7c7481..ce57a6a72cdd25 100755 --- a/scripts/cmake/vcpkg_build_make.cmake +++ b/scripts/cmake/vcpkg_build_make.cmake @@ -121,7 +121,7 @@ function(vcpkg_build_make) endif() # Since includes are buildtype independent those are setup by vcpkg_configure_make - vcpkg_backup_env_variables(VARS LIB LIBPATH LIBRARY_PATH LD_LIBRARY_PATH) + vcpkg_backup_env_variables(VARS LIB LIBPATH LIBRARY_PATH LD_LIBRARY_PATH CPPFLAGS CFLAGS CXXFLAGS RCFLAGS) foreach(buildtype IN ITEMS "debug" "release") if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "${buildtype}") @@ -250,5 +250,5 @@ function(vcpkg_build_make) set(ENV{PATH} "${path_backup}") endif() - vcpkg_restore_env_variables(VARS LIB LIBPATH LIBRARY_PATH LD_LIBRARY_PATH) + vcpkg_restore_env_variables(VARS LIB LIBPATH LIBRARY_PATH LD_LIBRARY_PATH CPPFLAGS CFLAGS CXXFLAGS RCFLAGS) endfunction() From d5d487c189ffa7a51840a4273b6e30bc2672e6b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Wed, 9 Feb 2022 23:13:21 +0100 Subject: [PATCH 6/7] [vcpkg_build_make] Fix name of LINKER FLAGS detected from cmake --- scripts/cmake/vcpkg_build_make.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/cmake/vcpkg_build_make.cmake b/scripts/cmake/vcpkg_build_make.cmake index ce57a6a72cdd25..4f4bea545c0304 100755 --- a/scripts/cmake/vcpkg_build_make.cmake +++ b/scripts/cmake/vcpkg_build_make.cmake @@ -142,9 +142,9 @@ function(vcpkg_build_make) z_vcpkg_extract_cpp_flags_and_set_cflags_and_cxxflags("${cmake_buildtype}") if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") - set(LINKER_FLAGS_${cmake_buildtype} "${VCPKG_DETECTED_STATIC_LINKER_FLAGS_${cmake_buildtype}}") + set(LINKER_FLAGS_${cmake_buildtype} "${VCPKG_DETECTED_CMAKE_STATIC_LINKER_FLAGS_${cmake_buildtype}}") else() # dynamic - set(LINKER_FLAGS_${cmake_buildtype} "${VCPKG_DETECTED_SHARED_LINKER_FLAGS_${cmake_buildtype}}") + 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") From 8397ef914d5ea8380db20eeb76e543b9cebb8f5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Wed, 9 Feb 2022 23:21:22 +0100 Subject: [PATCH 7/7] [vcpkg_build_make] replace obolete _VAR_SUFFIX with cmake_buildtype --- scripts/cmake/vcpkg_build_make.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/cmake/vcpkg_build_make.cmake b/scripts/cmake/vcpkg_build_make.cmake index 4f4bea545c0304..ec320fc226faae 100755 --- a/scripts/cmake/vcpkg_build_make.cmake +++ b/scripts/cmake/vcpkg_build_make.cmake @@ -176,9 +176,9 @@ function(vcpkg_build_make) endforeach() unset(lib_env_vars) - if(LINK_ENV_${_VAR_SUFFIX}) + if(LINK_ENV_${cmake_buildtype}) set(config_link_backup "$ENV{_LINK_}") - set(ENV{_LINK_} "${LINK_ENV_${_VAR_SUFFIX}}") + set(ENV{_LINK_} "${LINK_ENV_${cmake_buildtype}}") endif() if(arg_ADD_BIN_TO_PATH)