Skip to content

Conversation

@crueter
Copy link
Contributor

@crueter crueter commented Sep 8, 2025

SOURCE vs CURRENT_SOURCE is unreliable. DEFINED PROJECT_NAME is a much more portable way of determination.

Also, installation shouldn't default to on if it is a subproject.

…roject

SOURCE vs CURRENT_SOURCE is unreliable. `DEFINED PROJECT_NAME` is a much more portable way of determination.

Also, installation shouldn't default to on if it is a subproject.
@crueter crueter changed the title [cmake] fix MASTER_PROJECT heuristic; only enable install if master p… [cmake] fix MASTER_PROJECT heuristic; only enable install if root Sep 8, 2025
@vitaut
Copy link
Contributor

vitaut commented Sep 8, 2025

Thanks for the PR but could you elaborate why the current check is unreliable?

@crueter
Copy link
Contributor Author

crueter commented Sep 8, 2025

Thanks for the PR but could you elaborate why the current check is unreliable?

With CPM.cmake and I believe FetchContent, FMT_MASTER_PROJECT would always evaluate to ON since those set CMAKE_SOURCE_DIR to CMAKE_CURRENT_SOURCE_DIR for this subdirectory. I remember there being some good reason for this but I can't recall exactly what it is; regardless, with this change, FMT_MASTER_PROJECT now works in all scenarios I tried: CPM, FetchContent, Git submodules, and as a standalone project.

@vitaut vitaut merged commit da97ba2 into fmtlib:master Sep 10, 2025
40 checks passed
@vitaut
Copy link
Contributor

vitaut commented Sep 10, 2025

Merged, thanks!

@crueter crueter deleted the patch-1 branch September 10, 2025 18:23
pytorchmergebot pushed a commit to pytorch/pytorch that referenced this pull request Sep 30, 2025
`fmtlib` version was updated to 12.0.0 in #163441.

In this new version, due to fmtlib/fmt#4536, PyTorch started not installing `fmtlib` headers anymore. Because of that, PyTorch/XLA build CI started to fail pytorch/xla#9653. While we did fix it internally pytorch/xla#9650, I believe that PyTorch should continue installing the `fmtlib` headers, since it is a dependency of its C API [`python_arg_parser.h`][1].

PyTorch/XLA CI was moved to `unstable.yml` in #159272, and later removed in #163564. This PyTorch/XLA build failure went under the radar, since the `fmtlib` update only landed on September 22.

[1]: https://github.com/pytorch/pytorch/blob/84d673ef577d42d6ec20c6c9f09863583c3111f5/torch/csrc/utils/python_arg_parser.h#L42
Pull Request resolved: #164139
Approved by: https://github.com/Skylion007, https://github.com/malfet
mtremer pushed a commit to ipfire/ipfire-2.x that referenced this pull request Nov 6, 2025
- Update from version 11.2.0 to 12.1.0
- Update of rootfile
- so-bump so mpd requires shipping
- Changelog
    12.1.0
	- Optimized `buffer::append`, resulting in up to ~16% improvement on spdlog
	  benchmarks (fmtlib/fmt#4541). Thanks @fyrsta7.
	- Worked around an ABI incompatibility in `std::locale_ref` between clang and
	  gcc (fmtlib/fmt#4573).
	- Made `std::variant` and `std::expected` formatters work with `format_as`
	  (fmtlib/fmt#4574,
	  fmtlib/fmt#4575). Thanks @phprus.
	- Made `fmt::join<string_view>` work with C++ modules
	  (fmtlib/fmt#4379,
	  fmtlib/fmt#4577). Thanks @Arghnews.
	- Exported `fmt::is_compiled_string` and `operator""_cf` from the module
	  (fmtlib/fmt#4544). Thanks @CrackedMatter.
	- Fixed a compatibility issue with C++ modules in clang
	  (fmtlib/fmt#4548). Thanks @tsarn.
	- Added support for cv-qualified types to the `std::optional` formatter
	  (fmtlib/fmt#4561,
	  fmtlib/fmt#4562). Thanks @OleksandrKvl.
	- Added demangling support (used in exception and `std::type_info` formatters)
	  for libc++ and clang-cl
	  (fmtlib/fmt#4542,
	  fmtlib/fmt#4560,
	  fmtlib/fmt#4568,
	  fmtlib/fmt#4571).
	  Thanks @FatihBAKIR and @rohitsutreja.
	- Switched to global `malloc`/`free` to enable allocator customization
	  (fmtlib/fmt#4569,
	  fmtlib/fmt#4570). Thanks @rohitsutreja.
	- Made the `FMT_USE_CONSTEVAL` macro configurable by users
	  (fmtlib/fmt#4546). Thanks @SnapperTT.
	- Fixed compilation with locales disabled in the header-only mode
	  (fmtlib/fmt#4550).
	- Fixed compilation with clang 21 and `-std=c++20`
	  (fmtlib/fmt#4552).
	- Fixed a dynamic linking issue with clang-cl
	  (fmtlib/fmt#4576,
	  fmtlib/fmt#4584). Thanks @FatihBAKIR.
	- Fixed a warning suppression leakage on gcc
	  (fmtlib/fmt#4588). Thanks @ZedThree.
	- Made more internal color APIs `constexpr`
	  (fmtlib/fmt#4581). Thanks @ishani.
	- Fixed compatibility with clang as a host compiler for NVCC
	  (fmtlib/fmt#4564). Thanks @valgur.
	- Fixed various warnings and lint issues
	  (fmtlib/fmt#4565,
	  fmtlib/fmt#4572,
	  fmtlib/fmt#4557).
	  Thanks @LiangHuDream and @teruyamato0731.
	- Improved documentation
	  (fmtlib/fmt#4549,
	  fmtlib/fmt#4551,
	  fmtlib/fmt#4566,
	  fmtlib/fmt#4567,
	  fmtlib/fmt#4578,).
	  Thanks @teruyamato0731, @petersteneteg and @zimmerman-dev.
    12.0.0
	- Optimized the default floating point formatting
	  (fmtlib/fmt#3675,
	  fmtlib/fmt#4516). In particular, formatting a
	  `double` with format string compilation into a stack allocated buffer is
	  more than 60% faster in version 12.0 compared to 11.2 according to
	  [dtoa-benchmark](https://github.com/fmtlib/dtoa-benchmark):
	  ```
	  Function  Time (ns)  Speedup
	  fmt11        34.471    1.00x
	  fmt12        21.000    1.64x
	  ```
	  <img width="766" height="609" src="https://github.com/user-attachments/assets/d7d768ad-7543-468c-b0bb-449abf73b31b" />
	- Added `constexpr` support to `fmt::format`. For example:
	  ```c++
	  #include <fmt/compile.h>
	  using namespace fmt::literals;
	  std::string s = fmt::format(""_cf, 42);
	  ```
	  now works at compile time provided that `std::string` supports `constexpr`
	  (fmtlib/fmt#3403,
	  fmtlib/fmt#4456). Thanks @msvetkin.
	- Added `FMT_STATIC_FORMAT` that allows formatting into a string of the exact
	  required size at compile time.
	  For example:
	  ```c++
	  #include <fmt/compile.h>
	  constexpr auto s = FMT_STATIC_FORMAT("{}", 42);
	  ```
	  compiles to just
	  ```s
	  __ZL1s:
	        .asciiz "42"
	  ```
	  It can be accessed as a C string with `s.c_str()` or as a string view with
	  `s.str()`.
	- Improved C++20 module support
	  (fmtlib/fmt#4451,
	  fmtlib/fmt#4459,
	  fmtlib/fmt#4476,
	  fmtlib/fmt#4488,
	  fmtlib/fmt#4491,
	  fmtlib/fmt#4495).
	  Thanks @arBmind, @tkhyn, @Mishura4, @anonymouspc and @autoantwort.
	- Switched to using estimated display width in precision. For example:
	  ```c++
	  fmt::print("|{:.4}|\n|1234|\n", "🐱🐱🐱");
	  ```
	  prints
	  ![](https://github.com/user-attachments/assets/6c4446b3-13eb-43b9-b74a-b4543540ad6a)
	  because `🐱` has an estimated width of 2
	  (fmtlib/fmt#4272,
	  fmtlib/fmt#4443,
	  fmtlib/fmt#4475).
	  Thanks @nikhilreddydev and @localspook.
	- Fix interaction between debug presentation, precision, and width for strings
	  (fmtlib/fmt#4478). Thanks @localspook.
	- Implemented allocator propagation on `basic_memory_buffer` move
	  (fmtlib/fmt#4487,
	  fmtlib/fmt#4490). Thanks @toprakmurat.
	- Fixed an ambiguity between `std::reference_wrapper<T>` and `format_as`
	  formatters (fmtlib/fmt#4424,
	  fmtlib/fmt#4434). Thanks @jeremy-rifkin.
	- Removed the following deprecated APIs:
	  - `has_formatter`: use `is_formattable` instead,
	  - `basic_format_args::parse_context_type`,
	    `basic_format_args::formatter_type` and similar aliases in context types,
	  - wide stream overload of `fmt::printf`,
	  - wide stream overloads of `fmt::print` that take text styles,
	  - `is_*char` traits,
	  - `fmt::localtime`.
	- Deprecated wide overloads of `fmt::fprintf` and `fmt::sprintf`.
	- Improved diagnostics for the incorrect usage of `fmt::ptr`
	  (fmtlib/fmt#4453). Thanks @TobiSchluter.
	- Made handling of ANSI escape sequences more efficient
	  (fmtlib/fmt#4511,
	  fmtlib/fmt#4528).
	  Thanks @localspook and @Anas-Hamdane.
	- Fixed a buffer overflow on all emphasis flags set
	  (fmtlib/fmt#4498). Thanks @dominicpoeschko.
	- Fixed an integer overflow for precision close to the max `int` value.
	- Fixed compatibility with WASI (fmtlib/fmt#4496,
	  fmtlib/fmt#4497). Thanks @whitequark.
	- Fixed `back_insert_iterator` detection, preventing a fallback on slower path
	  that handles arbitrary iterators (fmtlib/fmt#4454).
	- Fixed handling of invalid glibc `FILE` buffers
	  (fmtlib/fmt#4469).
	- Added `wchar_t` support to the `std::byte` formatter
	  (fmtlib/fmt#4479,
	  fmtlib/fmt#4480). Thanks @phprus.
	- Changed component prefix from `fmt-` to `fmt_` for compatibility with
	  NSIS/CPack on Windows, e.g. `fmt-doc` changed to `fmt_doc`
	  (fmtlib/fmt#4441,
	  fmtlib/fmt#4442). Thanks @n-stein.
	- Added the `FMT_CUSTOM_ASSERT_FAIL` macro to simplify providing a custom
	  `fmt::assert_fail` implementation (fmtlib/fmt#4505).
	  Thanks @HazardyKnusperkeks.
	- Switched to `FMT_THROW` on reporting format errors so that it can be
	  overriden by users when exceptions are disabled
	  (fmtlib/fmt#4521). Thanks @HazardyKnusperkeks.
	- Improved master project detection and disabled install targets when using
	  {fmt} as a subproject by default (fmtlib/fmt#4536).
	  Thanks @crueter.
	- Made various code improvements
	  (fmtlib/fmt#4445,
	  fmtlib/fmt#4448,
	  fmtlib/fmt#4473,
	  fmtlib/fmt#4522).
	  Thanks @localspook, @tchaikov and @way4sahil.
	- Added Conan instructions to the docs
	  (fmtlib/fmt#4537). Thanks @uilianries.
	- Removed Bazel files to avoid issues with downstream packaging
	  (fmtlib/fmt#4530). Thanks @mering.
	- Added more entries for generated files to `.gitignore`
	  (fmtlib/fmt#4355,
	  fmtlib/fmt#4512).
	  Thanks @dinomight and @localspook.
	- Fixed various warnings and compilation issues
	  (fmtlib/fmt#4447,
	  fmtlib/fmt#4470,
	  fmtlib/fmt#4474,
	  fmtlib/fmt#4477,
	  fmtlib/fmt#4471,
	  fmtlib/fmt#4483,
	  fmtlib/fmt#4515,
	  fmtlib/fmt#4533,
	  fmtlib/fmt#4534).
	  Thanks @dodomorandi, @localspook, @remyjette, @Tomek-Stolarczyk, @Mishura4,
	  @mattiasljungstrom and @FatihBAKIR.

Signed-off-by: Adolf Belka <[email protected]>
Signed-off-by: Michael Tremer <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants