[boost] stop renaming libs and add has_synchro for boost-atomic#27694
[boost] stop renaming libs and add has_synchro for boost-atomic#27694Neumann-A wants to merge 76 commits intomicrosoft:masterfrom
Conversation
|
Without opening a question of dropping support for older CMake versions, additional requirements apply for the DLL naming:
All of the above must work out of the box without any user customization |
Do you now which CMake version VS shipped with for VS 2022; 2019 and 2017 ? |
you mean LIB naming. vcpkg doesn't touch the dlls.
vcpkg shouldn't support FindBoost with VS 2022 and e.g. CMake 3.10. (VS 2022 was only added in 3.21). This means max
that is nearly tested by CI using it. (Increase CI CMake to match latest CMake? Or is that good enough?)
that should be handled by https://github.com/Kitware/CMake/blob/c974557598645360fbabac71352b083117e3cc17/Modules/FindBoost.cmake#L879-L881
only relevant change considering that is:
there is no change in this PR which would change that |
|
First I want to clarify that I was not attempting to only list items I believed this PR would break. This (renaming boost libs) has often been a topic of discussion before (as you listed -- "leads to irritation about the lib name") and so I wanted to provide a more complete picture of what our requirements are.
The last VS2017 ships with 3.12 (thanks @BillyONeal for installing it in a VM and checking!), however the existing comments[1] clearly indicate an intent to work with 3.10 or below. That's why I started with "Without opening a question of dropping support for older CMake versions" -- the current implementation claims support for at "least" 3.10, so dropping that would clearly be a changed support intent.
While CMake's FindBoost module does emit warnings for newer Boost versions, I have personally been extremely successful in the past when using a newer boost than what the CMake version explicitly checked. I believe the two potential issues are 1) new components won't be listable and 2) inter-dependencies with compiled modules may not be accurate. New components are not widespread by definition (they're new) and the inter-dependencies between compiled modules do not change very much from version to version.
Yep, I think that's good enough. I just wanted to be thorough in my list of "requirements".
Those lines were added in CMake 3.15 and so relying on them breaks [1]: |
You cannot use vs142/3 with CMake 3.10 so there is no need to support that "use case" since it doesn't exist. Support for 3.10 is only given for VS2015/17.
being a vs143 user already requires to be a 3.21 user. (https://cmake.org/cmake/help/latest/generator/Visual%20Studio%2017%202022.html) being a vs142 user requires to be at least a 3.14 user and that was based on a experimental VS release according to the release notes; so I am more in less in line to consider 3.15 the official supported version for vs142 ;). Especially since upstream CMake doesn't touch Find Modules unless stuff has been released (which I learned from trying to update FindMATLAB with a newer version before it was released.) So the real question here is if VS2019 really shipped with CMake 3.14 on release with an obviously broken |
|
So I think i solved the CMake |
|
Hi @Neumann-A, I've taken the liberty of splitting out the I do apologies for the slow turnaround on this PR. |
…pkg/pull… (#30836) * pulling has_synchro bits from #27694 * bump port version * version * fix clang * bump version * version * oops * bump dependency version for boost-atomic's boost-module-build-helper dependency * version * revert renaming stuff -.- * version * remove detection stuff for lib prefix/suffix * version * fix indentation * version * forgot one * version * one more! * version * revert changes to cmake-get-vars * version * generate ports * version db * generate ports * version db --------- Co-authored-by: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com>
The merge-base changed after approval.
# Conflicts: # ports/boost-atomic/vcpkg.json # ports/boost-modular-build-helper/boost-modular-build.cmake # ports/boost-modular-build-helper/vcpkg.json # ports/boost/vcpkg.json # scripts/boost/generate-ports.ps1 # scripts/test_ports/cmake-user/vcpkg.json # scripts/test_ports/vcpkg-ci-boost/vcpkg.json # versions/b-/boost-atomic.json # versions/b-/boost-modular-build-helper.json # versions/b-/boost-uninstall.json # versions/b-/boost.json # versions/baseline.json # versions/v-/vcpkg-cmake-get-vars.json
|
Discussion is currently in https://github.com/microsoft/vcpkg/pull/27694/files#r1238076280 which isn't directly visible from the main page |
The current behavior does:
a) leads to irritation about the lib name
b) doesn't work with clang-cl
c) Is wrong in that regard that VS2015 could use boost build with VS2022 which certainly will end in linker errors.....
supersedes #27693, #26337
(somebody using mingw might want to look into the mingw naming but in this PR i didn't touch that.)