summaryrefslogtreecommitdiffstats
path: root/vendor/vcpkg/notes.md
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-18 02:49:42 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-18 02:49:42 +0000
commit837b550238aa671a591ccf282dddeab29cadb206 (patch)
tree914b6b8862bace72bd3245ca184d374b08d8a672 /vendor/vcpkg/notes.md
parentAdding debian version 1.70.0+dfsg2-1. (diff)
downloadrustc-837b550238aa671a591ccf282dddeab29cadb206.tar.xz
rustc-837b550238aa671a591ccf282dddeab29cadb206.zip
Merging upstream version 1.71.1+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/vcpkg/notes.md')
-rw-r--r--vendor/vcpkg/notes.md81
1 files changed, 81 insertions, 0 deletions
diff --git a/vendor/vcpkg/notes.md b/vendor/vcpkg/notes.md
new file mode 100644
index 000000000..6db36c49c
--- /dev/null
+++ b/vendor/vcpkg/notes.md
@@ -0,0 +1,81 @@
+# Notes
+
+## Making a release
+
+1. run vcpkg_cli and test it
+1. run systest\test.cmd
+1. check that everything is committed and work dir is clean
+1. push to master on github
+1. check that github actions ci passes
+1. update changelog, commit and push
+1. update version number in Cargo.toml for the crate to be released
+1. commit
+1. push
+1. wait for the ci to work
+1. create a tag for the right crate like `git tag vcpkg-rs-0.2.3`
+1. cd to the crate dir and run `cargo publish`
+1. git push origin --tags
+
+## Possible future features
+
+- hide or deprecate or note that the lib_name api is not as good as find_package
+
+- make sure the find_package api is first in the docs and mention that it's the best option
+
+- allow specifying a triple to use using an environment variable. this will allow setting up a custom "x64-rust-static" triple that dynamically links to msvcrt, allowing static builds with the default rust.
+
+- add information about target triples and target triple selection being driven by RUSTFLAGS=-Ctarget-feature=+crt-static
+
+- add a note that even rust debug builds are linked against the release version
+ of built libraries
+
+- there is a lib\no_auto_link folder that some packages generate that needs
+ to be added to the link line. this will require finding an example of
+ a library that uses that feature. (boost?)
+
+- vcpkg_cli: make probe failure return a nonzero exit code so the build fails
+
+- remove crate doc info about the libname -> package mapping. (why?)
+
+- look into the possibility of using dotenv to allow setting VCPKG_ROOT
+
+- could run vcpkg and parse it's output to determine what package versions are installed.
+
+- could parse vcpkg's installed files list to guess at the names for libraries and dlls rather than requiring them to be specified.
+
+- could parse vcpkg's installed packages list to determine what other packages we need to link against.
+
+- vcpkg has common include and lib dirs so there is a chance that someone is going to end up picking up a vcpkg lib on their link line in preference to some other version at some point. I believe cmake handles this by using absolute paths for libs wherever possible. if everything below you in the dependency tree is looking in vcpkg then everything will agree.
+
+- vcpkg has a per-package output dir that looks like it would be helpful, but at present it is undocumented and subject to change. (what I read mentioned the possibility of compressing the contents.)
+
+- warn if you use something that looks like a vcpkg triplet in place of a rust triple
+
+- allow specifying of the library to be installed like pkg-config does. (hard in general because there is no specific format for version numbers )
+
+- allow stipulating that a specific feature be installed. at present if a feature is installed any extra libraries it requires will be linked as expected. how should this be? The vcpkg way is to specify it as harfbuzz[graphite2,icu] for example.
+
+- report enabled/available features in the Library returned from find_package
+
+- get information about installed packages by running the vcpkg executable
+
+ - if using json to encode the information, this requires writing a json parser or adding a dependency on serde for anything that transitively depends on vcpkg, which is a lot of stuff, probably only a tiny percentage of which actually uses the vcpkg functionality. otherwise, could invent yet another easy-to-parse custom format.
+ - vcpkg is now available on linux and macos also. a possible use is to build the whole bag of windows dependencies on a windows machine at the point that lld can cross link windows/msvc code.
+
+- add a changelog for vcpkg_cli
+
+- make the breaking change of dropping Rust 1.10 (actually 1.12) compatibility when updating to 0.3
+
+- vcpkg_cli should say if there are other versions of the ports available that do not match what is being looked for
+
+- add some commentary describing the vcpkg target triplets on windows - static vs dynamic crt and the fact that rust prefers something in between - dynamic crt, static libs on top of that.
+
+- vcpkg now has a community supported triplet called x64-windows-static-md which is a match for the default Rust build type on windows - dynamic linking to the c runtime, and static linking to other libraries.
+
+## Creating empty files from list files
+
+```sh
+touch `grep -h \.lib$ vcpkg/info/*x86* | grep -v debug `
+touch `grep -h \.dll$ vcpkg/info/*x86* | grep -v debug `
+```
+