2
0
mirror of https://github.com/boostorg/build.git synced 2026-02-01 20:32:17 +00:00
Commit Graph

13100 Commits

Author SHA1 Message Date
Nikita Kniazev
2aa8cf82b9 Long path and Unicode support on Windows 10.0.1607/10.0.1903+ (#316)
Long path support is still not universal, even after an app has explicitly opted-in via manifest it also requires registry modification or group policies, see https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=registry#enable-long-paths-in-windows-10-version-1607-and-later though Python and Git installers nudges to enable it by their installers for a while.

`-X utf8` forces Python to use UTF-8 when its outputs are piped (will be default in 3.15 https://peps.python.org/pep-0686/)

Also had to fix clang-linux and msvc toolsets manifest embedding issues.
2023-07-22 09:33:51 -05:00
Nikita Kniazev
fc1119d0e2 C-preprocessing-generator: fix missing relevant features (#326) 2023-07-18 06:37:14 -05:00
Nikita Kniazev
dc40b5004f test suite: print single file per line on lots of files (#311)
It is much harder to spot stuff in a long string. When every file is printed on a separate line it is visually much simple to search through it, recognize missing files and wrong prefixes/suffixes.
2023-07-17 21:55:10 -05:00
Nikita Kniazev
c653af1954 emscripten renovation (#310)
* test suite fixes for link=static default

* emscripten renovation

* inherit from clang toolset
* update for 'new' fastcomp backend
* exceptions support
* dynamic linking support
* pthread support
* run-tests launcher via nodejs
2023-07-17 21:53:06 -05:00
Nikita Kniazev
2f7f031ba7 virtual-target.register 6x performance improvement (#303)
total 79.2 -> 13.2 (6.0x)
self 34.2 -> 8.1 (4.2x)

target.actual-name is an ideal cache key because it is already used to register targets in the build engine which requires on it to be unique enough to not collide, while also is the shortest unique identifying string which is for a file targets consists of the target relevant properties, path prefix and name.

Co-authored-by: René Ferdinand Rivera Morell <grafikrobot@gmail.com>
2023-07-16 15:12:42 -05:00
Nikita Kniazev
cdab17f69c Fix disappeared messages from asserts (#301)
Regressed after porting assert and errors modules to native modules.
2023-07-16 08:36:39 -05:00
Nikita Kniazev
d1d7a6a16b MSYS2 fixes and CI (#298)
I've setup CI on GHA because it is much more convenient using their action script.

This covers different Mingw setups and it does not fail on PCH tests like Mingw-w64 one installed by default on GHA/Azure (either because GCC exe there was built without ASLR or is a new recent version which supports PCH relocation).
2023-07-16 08:33:13 -05:00
Rene Rivera
e71dc920f1 Merge 4.10.1 2023-07-15 16:01:25 -05:00
Rene Rivera
ba4a3c010f Silence Apple clang warnings. 2023-07-10 08:49:44 -05:00
Rene Rivera
09bd0f6750 Merge branch 'version/4.10.0' 2023-06-11 10:54:57 -05:00
Rene Rivera
c1dfb66557 Ci debugging. 2023-06-11 10:17:06 -05:00
Rene Rivera
e9aec2d478 Don't need dir slash trailer for exists test. 2023-06-11 09:58:55 -05:00
Rene Rivera
128e74b098 Release 4.10.0 notes. 2023-06-10 13:44:03 -05:00
github-actions[bot]
408dcf5ba1 [Backport version/4.10.0] Feature/project search (#321)
* Add automatic project searching.

This adds an automatic, but controlled, method for finding, declaring,
and loading of unknown rooted project-id references.

(cherry picked from commit 3f6dd2dee29a0a0d89a4c83bc16abbd3977453e8)

* Fix incorrect project search env var name.

(cherry picked from commit 87c35a56d1a1d1fbb16e02d6c1101cdcd2e8c2b7)

* Fix infinite recursion when project path has "..".

(cherry picked from commit 4a7c4156df8295d442373b4feb99d426b55a887b)

* Fix use of >4.x native built-in.

---------

Co-authored-by: Rene Rivera <grafikrobot@gmail.com>
2023-06-10 12:47:02 -05:00
René Ferdinand Rivera Morell
131b504076 Add automatic project searching.
This adds an automatic, but controlled, method for finding, declaring,
and loading of unknown rooted project-id references.
2023-06-09 21:30:36 -05:00
Rene Rivera
4fc42b9efe Bump to 4.10.0 for release. 2023-06-09 08:37:41 -05:00
github-actions[bot]
62b61acee1 Fix msvc auto config version priority. (#320)
When configuring all msvc toolsets we would configure the ones from the registry followed by known location versions. This had the effect of making msvc versions from the registry the default over the pathed ones. Since the newer releases, after 14.0, don't use the registry it meant that even if you had new ones it would pick 14.0 (or earlier) as the default. This change tries to register them with registry and pathed each. Which results in preserving the new-to-old ordering. Resulting in the newest being the default, as intended.

(cherry picked from commit 0298977a9f3efe2f12e661a29f8fe3105cb6b0d8)

Co-authored-by: René Ferdinand Rivera Morell <grafikrobot@gmail.com>
2023-06-03 16:09:15 -05:00
github-actions[bot]
0660fea4f0 Fix use-project with native paths. (#319)
It's possible, and common in Boost, to register projects using native paths (usually from env vars). That would cause incorrect tracking of the projects and result in failing to find them. This change converts the native path to a b2 path for registration. Which resolves finding them when it comes to loading the used projects.

(cherry picked from commit 80e5026a277a77daafe52c26ff589d0e22fb9c82)

Co-authored-by: René Ferdinand Rivera Morell <grafikrobot@gmail.com>

[ski ci]
2023-06-03 16:08:25 -05:00
René Ferdinand Rivera Morell
1ae2e3765a Fix msvc auto config version priority. (#317)
When configuring all msvc toolsets we would configure the ones from the registry followed by known location versions. This had the effect of making msvc versions from the registry the default over the pathed ones. Since the newer releases, after 14.0, don't use the registry it meant that even if you had new ones it would pick 14.0 (or earlier) as the default. This change tries to register them with registry and pathed each. Which results in preserving the new-to-old ordering. Resulting in the newest being the default, as intended.
2023-06-03 11:38:18 -05:00
René Ferdinand Rivera Morell
09d8d07694 Fix use-project with native paths. (#318)
It's possible, and common in Boost, to register projects using native paths (usually from env vars). That would cause incorrect tracking of the projects and result in failing to find them. This change converts the native path to a b2 path for registration. Which resolves finding them when it comes to loading the used projects.
2023-06-03 11:36:34 -05:00
Nikita Kniazev
d349465559 sequence.unique massive performance boost (#300)
Boost@develop `b2 --layout=versioned -n install -d+10`
build was    now         sequence.unique
clean 594 -> 230 (2.6x)  366 -> 1.29 (284x)
rerun 547 -> 182 (3.0x)  362 -> 1.27 (285x)

I've changed unification in generators to be stable because it is faster somehow (by 33% vs non-sorting non-stable unique, by 180% vs sorting unique), plus it is preferable that targets are built in the order of declaration.
2023-05-07 09:49:24 -05:00
Nikita Kniazev
4495ed655d ubsan clang workaround and fixes (#293) 2023-05-06 20:26:27 -05:00
github-actions[bot]
b0e7b3ff59 testing.execute=off fixes #195 (#308)
1. run-fail tests were failing with testing.execute=off
2. rerun w/o testing.execute=off did nothing

(cherry picked from commit d9f7b065e41a540aedb7bd0a241567f0247fade6)

Co-authored-by: Nikita Kniazev <nok.raven@gmail.com>

[skip ci]
2023-05-06 16:10:02 -05:00
Nikita Kniazev
bdb3a587ce testing.execute=off fixes #195 (#297)
1. run-fail tests were failing with testing.execute=off
2. rerun w/o testing.execute=off did nothing
2023-05-06 06:40:18 -05:00
Nikita Kniazev
eaef11285e Fix ODR for struct _binding (#292) 2023-05-06 06:34:24 -05:00
github-actions[bot]
58361ebaf5 Fix generator custom rule name inheritance (#307)
One example of this is gcc.cygwin/mingw.link which sets rule name to gcc.link. If you let clang-linux inherit such generator -- clone would just reset the name to new-id and execution will fail with attempt to call non-existing clang-linux.cygwin/mingw.link rule.

(cherry picked from commit ca686f2042e57da4efe360aabd0f2f6017946cca)

Co-authored-by: Nikita Kniazev <nok.raven@gmail.com>

[skip ci]
2023-05-05 22:25:07 -05:00
github-actions[bot]
135b0cd9ae force same basename for pdb as what they accompanying (#306)
This reverts commit 411b3feb3588cb010dd87ce23c5a69a993910b24.

(cherry picked from commit e63dc87f2e7483399e42bd9c0b250d5f55bb40b4)

Co-authored-by: Nikita Kniazev <nok.raven@gmail.com>

[skip ci]
2023-05-05 19:24:55 -05:00
Nikita Kniazev
5da27a445c Fix generator custom rule name inheritance (#291)
One example of this is gcc.cygwin/mingw.link which sets rule name to gcc.link. If you let clang-linux inherit such generator -- clone would just reset the name to new-id and execution will fail with attempt to call non-existing clang-linux.cygwin/mingw.link rule.
2023-05-05 07:18:23 -05:00
Nikita Kniazev
66228165cc force same basename for pdb as what they accompanying (#299)
This reverts commit 411b3feb3588cb010dd87ce23c5a69a993910b24.
2023-05-05 07:11:44 -05:00
github-actions[bot]
c24908fb0f Don't store empty config cache and log (#305)
(cherry picked from commit 4e41d7884a7d78d6122d30681b97cbf2cc1c926a)

Co-authored-by: Nikita Kniazev <nok.raven@gmail.com>

[skip ci]
2023-05-05 07:09:11 -05:00
Nikita Kniazev
d56db3d431 Don't store empty config cache and log (#288) 2023-05-04 20:33:09 -05:00
github-actions[bot]
1766d87fe4 unify clang-vxworks by inheriting from clang-linux (#290)
`<linker>` override is preserved and passed to clang as the linker to use.

(cherry picked from commit 2398110169f3553ba76afe351fb1d411470baf92)

Co-authored-by: Nikita Kniazev <nok.raven@gmail.com>

[skip ci]
2023-04-24 16:43:11 -05:00
Nikita Kniazev
a072cd12e9 unify clang-vxworks by inheriting from clang-linux (#287)
`<linker>` override is preserved and passed to clang as the linker to use.
2023-04-24 09:04:52 -05:00
github-actions[bot]
15cebb1384 mingw/msys/cygwin winthreads/pthread fixes (#289)
-mthreads is obsolete and is not presented in clang, and was never a thing in cygwin (fixes #38).

I have no idea why clang was configured to add -pthread on threadapi=win32, changing this is a breaking change but is the right thing to do. I run Boost.Thread tests and it passed cleanly on both threadapi=win32 and threadapi=pthread.

(cherry picked from commit 308bdd509d47cfed5e25bda747cb9e6c6a93b790)

Co-authored-by: Nikita Kniazev <nok.raven@gmail.com>

[skip ci]
2023-04-24 09:00:23 -05:00
Nikita Kniazev
e8a753db99 mingw/msys/cygwin winthreads/pthread fixes (#284)
-mthreads is obsolete and is not presented in clang, and was never a thing in cygwin (fixes #38).

I have no idea why clang was configured to add -pthread on threadapi=win32, changing this is a breaking change but is the right thing to do. I run Boost.Thread tests and it passed cleanly on both threadapi=win32 and threadapi=pthread.
2023-04-23 20:50:28 -05:00
github-actions[bot]
e9b22b0c76 unify clang-darwin linking with gcc (#283)
(cherry picked from commit c37089430db106cec5f5534dcd645f86345f7027)

Co-authored-by: Nikita Kniazev <nok.raven@gmail.com>

[skip ci]
2023-04-22 22:44:26 -05:00
Nikita Kniazev
4d7d2831c8 unify clang-darwin linking with gcc (#281) 2023-04-22 15:34:01 -05:00
github-actions[bot]
8fd8311f4b [Backport version/4.10.0] pdb order issues tentative fix (#282)
* update tag test to check pdbs too
* pdb order issues tentative fix
* use usual name generation machinery for pdbs

I believe this is the root cause of mysterious bugs involving pdbs:
  1. `replace-targets` may rearrange targets order, which might be the cause of
     exe/dll/lib swapping places.
  2. The hack in `msvc-linking-generator` were messing things up somehow when
     `virtual-target.register` returns a cached target.

Even if the change does not fix these issues it is still a good code refactor.

Co-authored-by: Nikita Kniazev <nok.raven@gmail.com>

[skip ci]
2023-04-22 12:53:25 -05:00
Nikita Kniazev
2310d41abe pdb order issues tentative fix (#277)
* update tag test to check pdbs too

* pdb order issues tentative fix

I believe this is the root cause of mysterious bugs involving pdbs:
  1. `replace-targets` may rearrange targets order, which might be the cause of
     exe/dll/lib swapping places.
  2. The hack in `msvc-linking-generator` were messing things up somehow when
     `virtual-target.register` returns a cached target.

Even if the change does not fix these issues it is still a good code refactor.

* use usual name generation machinery for pdbs
2023-04-22 08:08:57 -05:00
github-actions[bot]
8d3b1d2ced gcc: unify mingw linking (#280)
Rearranging to `SHARED_LIB IMPORT_LIB` order makes `$(<[2])` always an implib and allows to drive `--out-implib` by generator directly without any chances to produce an implib with the main generator which is not meant to produce them.

(cherry picked from commit f31180a77709c68e49c040b8028eb8e605c97874)

Co-authored-by: Nikita Kniazev <nok.raven@gmail.com>
2023-04-22 08:05:53 -05:00
github-actions[bot]
910e0dd023 test suite: use python builtin difflib library (#279)
(cherry picked from commit 4310866100f4b6f15abad78162c67cdf1addf82a)

Co-authored-by: Nikita Kniazev <nok.raven@gmail.com>

[skip ci]
2023-04-22 08:01:41 -05:00
Nikita Kniazev
45ad87c75b gcc: unify mingw linking (#273)
Rearranging to `SHARED_LIB IMPORT_LIB` order makes `$(<[2])` always an implib and allows to drive `--out-implib` by generator directly without any chances to produce an implib with the main generator which is not meant to produce them.
2023-04-21 20:19:26 -05:00
Nikita Kniazev
3b37e2035d test suite: use python builtin difflib library (#275) 2023-04-21 20:14:46 -05:00
github-actions[bot]
7a7e66cb56 test suite: msys/cygwin fixes (#272)
3 tests (core_language, package, toolset_msvc) still remain broken.

(cherry picked from commit f5103afdd6d950f30fbf3b5da6648db071ae9bcd)

Co-authored-by: Nikita Kniazev <nok.raven@gmail.com>
2023-04-21 10:39:12 -05:00
github-actions[bot]
1913458e8e mock tests without compiled wrappers (#276)
Removes additional point of failure, the need for actual toolset to be available, and speeds up mock tests considerably.

A bit disgusting solution, could be improved by removing limitation where toolsets take into account only first `<archive>` value.

(cherry picked from commit 6d5e150f1e17562a8efe2f396914da8123a9917a)

Co-authored-by: Nikita Kniazev <nok.raven@gmail.com>
2023-04-21 07:46:55 -05:00
Nikita Kniazev
96a5bdd8d2 mock tests without compiled wrappers (#274)
Removes additional point of failure, the need for actual toolset to be available, and speeds up mock tests considerably.

A bit disgusting solution, could be improved by removing limitation where toolsets take into account only first `<archive>` value.
2023-04-20 21:38:57 -05:00
Nikita Kniazev
0f21716c62 test suite: msys/cygwin fixes (#253) 2023-04-20 07:19:46 -05:00
github-actions[bot]
03373465d6 Multiprocessing tests runner (#270)
There are a few hacks to preserve quick Ctrl-C behavior.
I also added timings to the output and progress numbers.

(cherry picked from commit 948482fa9a355d9e425613b378415077e8e730b4)

Co-authored-by: Nikita Kniazev <nok.raven@gmail.com>
2023-04-20 07:17:29 -05:00
Nikita Kniazev
9a96cbab20 Multiprocessing tests runner (#267)
There are a few hacks to preserve quick Ctrl-C behavior.
I also added timings to the output and progress numbers.
2023-04-19 16:56:52 -05:00
github-actions[bot]
1392df3638 Check docs are used (#268)
(cherry picked from commit 24dc6e025ad46afa249336ad5225d5da1f57e128)

Co-authored-by: Nikita Kniazev <nok.raven@gmail.com>

[skip ci]
2023-04-19 08:42:34 -05:00