Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
20e3836
[vcpkg_fixup_cmake_targets] Fix up OSX system development path
Mar 15, 2021
7b57ce2
fixing scripts tree rules
strega-nil Mar 15, 2021
0e1daee
Update scripts/cmake/vcpkg_fixup_cmake_targets.cmake
JackBoosY Mar 21, 2021
34669a6
Merge branch 'master' of https://github.com/JackBoosY/vcpkg into dev/…
Apr 4, 2021
473fc2c
Update ports/vcpkg-cmake-config/vcpkg_cmake_config_fixup.cmake
JackBoosY Apr 14, 2021
8e6212d
Update scripts/cmake/vcpkg_fixup_cmake_targets.cmake
JackBoosY Apr 14, 2021
151d004
Update ports/vcpkg-cmake-config/vcpkg_cmake_config_fixup.cmake
JackBoosY Apr 16, 2021
e6b400e
Update scripts/cmake/vcpkg_fixup_cmake_targets.cmake
JackBoosY Apr 16, 2021
f41fb50
Update ports/vcpkg-cmake-config/vcpkg_cmake_config_fixup.cmake
JackBoosY Apr 16, 2021
12ecd4c
Update scripts/cmake/vcpkg_fixup_cmake_targets.cmake
JackBoosY Apr 16, 2021
5b66887
Update scripts/cmake/vcpkg_fixup_cmake_targets.cmake
JackBoosY Apr 20, 2021
80d5126
Update ports/vcpkg-cmake-config/vcpkg_cmake_config_fixup.cmake
JackBoosY Apr 20, 2021
73714eb
Fix exported osx framework config
dg0yt May 16, 2021
3ffe3d1
Revise patterns
dg0yt May 16, 2021
1d85d58
Match line from keyword to newline
dg0yt May 16, 2021
da963a4
Fix usage of vcpkg_internal_get_cmake_vars
dg0yt May 19, 2021
6f629ad
Fix pattern matching
dg0yt May 19, 2021
f112ecf
Copy changes to vcpkg_fixup_cmake_targets.cmake
dg0yt May 19, 2021
d77688e
Use separate build dir for getting cmake vars
dg0yt May 19, 2021
17ab5e6
Use pristine get_cmake_vars
dg0yt May 19, 2021
d71129e
Fix variable name
dg0yt May 29, 2021
96c2367
Merge pull request #2 from dg0yt/osx-framework-config
JackBoosY May 31, 2021
3415629
Merge branch 'master' of https://github.com/microsoft/vcpkg into dev/…
Jun 2, 2021
f251599
Merge branch 'dev/jack/16259' of https://github.com/JackBoosY/vcpkg i…
Jun 2, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 45 additions & 2 deletions ports/vcpkg-cmake-config/vcpkg_cmake_config_fixup.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,51 @@ get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)]]
file(WRITE "${main_cmake}" "${contents}")
endforeach()

if (VCPKG_TARGET_IS_OSX)
# see #16259 for details why this replacement is necessary.
file(GLOB targets_files "${release_share}/*[Tt]argets.cmake")
if (targets_files STREQUAL "")
file(GLOB targets_files "${release_share}/*[Cc]onfig.cmake")
endif()
foreach(targets_file IN LISTS targets_files)
file(READ "${targets_file}" targets_content)
string(REGEX MATCHALL "INTERFACE_LINK_LIBRARIES[^\n]*\n" library_contents "${targets_content}")
foreach(line IN LISTS library_contents)
set(fixed_line "${line}")
string(REGEX MATCHALL [[/[^ ;"]+/[^ ;"/]+\.framework]] frameworks "${line}")
foreach(framework IN LISTS frameworks)
if(NOT framework MATCHES [[^(.+)/(.+)\.framework$]])
continue()
endif()
set(path "${CMAKE_MATCH_1}")
set(name "${CMAKE_MATCH_2}")
if(NOT DEFINED VCPKG_DETECTED_CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES)
set(_saved_buildtrees_dir "${CURRENT_BUILDTREES_DIR}")
set(CURRENT_BUILDTREES_DIR "${CURRENT_BUILDTREES_DIR}/get-cmake-vars")
vcpkg_internal_get_cmake_vars(
OUTPUT_FILE _VCPKG_CMAKE_VARS_FILE
OPTIONS
-DVCPKG_LANGUAGES=CXX
-DVCPKG_VARS_TO_CHECK=CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES
-DVCPKG_FLAGS_TO_CHECK=
-DVCPKG_ENV_VARS_TO_CHECK=
)
debug_message("Including cmake vars from: ${_VCPKG_CMAKE_VARS_FILE}")
include("${_VCPKG_CMAKE_VARS_FILE}")
set(VCPKG_DETECTED_CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "${VCPKG_DETECTED_CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES}" PARENT_SCOPE)
set(CURRENT_BUILDTREES_DIR "${_saved_buildtrees_dir}")
endif()
list(FIND VCPKG_DETECTED_CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "${path}" index)
if(NOT index EQUAL -1)
string(REPLACE "${framework}" "-framework ${name}" fixed_line "${fixed_line}")
endif()
endforeach()
string(REPLACE "${line}" "${fixed_line}" targets_content "${targets_content}")
endforeach()
file(WRITE "${targets_file}" "${targets_content}")
endforeach()
endif()

# Remove /debug/<target_path>/ if it's empty.
file(GLOB_RECURSE remaining_files "${debug_share}/*")
if(remaining_files STREQUAL "")
Expand All @@ -233,5 +278,3 @@ get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)]]
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
endif()
endfunction()


47 changes: 45 additions & 2 deletions scripts/cmake/vcpkg_fixup_cmake_targets.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,51 @@ function(vcpkg_fixup_cmake_targets)
file(WRITE ${MAIN_CMAKE} "${_contents}")
endforeach()

if (VCPKG_TARGET_IS_OSX)
# see #16259 for details why this replacement is necessary.
file(GLOB targets_files "${RELEASE_SHARE}/*[Tt]argets.cmake")
if (targets_files STREQUAL "")
file(GLOB targets_files "${RELEASE_SHARE}/*[Cc]onfig.cmake")
endif()
foreach(targets_file IN LISTS targets_files)
file(READ "${targets_file}" targets_content)
string(REGEX MATCHALL "INTERFACE_LINK_LIBRARIES[^\n]*\n" library_contents "${targets_content}")
foreach(line IN LISTS library_contents)
set(fixed_line "${line}")
string(REGEX MATCHALL [[/[^ ;"]+/[^ ;"/]+\.framework]] frameworks "${line}")
foreach(framework IN LISTS frameworks)
if(NOT framework MATCHES [[^(.+)/(.+)\.framework$]])
continue()
endif()
set(path "${CMAKE_MATCH_1}")
set(name "${CMAKE_MATCH_2}")
if(NOT DEFINED VCPKG_DETECTED_CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES)
set(_saved_buildtrees_dir "${CURRENT_BUILDTREES_DIR}")
set(CURRENT_BUILDTREES_DIR "${CURRENT_BUILDTREES_DIR}/get-cmake-vars")
vcpkg_internal_get_cmake_vars(
OUTPUT_FILE _VCPKG_CMAKE_VARS_FILE
OPTIONS
-DVCPKG_LANGUAGES=CXX
-DVCPKG_VARS_TO_CHECK=CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES
-DVCPKG_FLAGS_TO_CHECK=
-DVCPKG_ENV_VARS_TO_CHECK=
)
debug_message("Including cmake vars from: ${_VCPKG_CMAKE_VARS_FILE}")
include("${_VCPKG_CMAKE_VARS_FILE}")
set(VCPKG_DETECTED_CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "${VCPKG_DETECTED_CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES}" PARENT_SCOPE)
set(CURRENT_BUILDTREES_DIR "${_saved_buildtrees_dir}")
endif()
list(FIND VCPKG_DETECTED_CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "${path}" index)
if(NOT index EQUAL -1)
string(REPLACE "${framework}" "-framework ${name}" fixed_line "${fixed_line}")
endif()
endforeach()
string(REPLACE "${line}" "${fixed_line}" targets_content "${targets_content}")
endforeach()
file(WRITE "${targets_file}" "${targets_content}")
endforeach()
endif()

# Remove /debug/<target_path>/ if it's empty.
file(GLOB_RECURSE REMAINING_FILES "${DEBUG_SHARE}/*")
if(NOT REMAINING_FILES)
Expand All @@ -241,5 +286,3 @@ function(vcpkg_fixup_cmake_targets)
file(WRITE ${CMAKE_FILE} "${_contents}")
endforeach()
endfunction()