push
github
cmake: fix LTO build on Fedora This patch is a follow-up to the commit 25af976f5 ("build: support cmake 4.0"). Since version 3.4, CMake doesn't add flags to export symbols from executables without the ENABLE_EXPORTS target property, see CMP0065 [1] for details. Without this property, some unit C tests produce build warnings with LTO optimization enabled (for example, on Fedora 39): NO_WRAP ``` [ 72%] Linking CXX executable luaT_tuple_new.test In function ‘rmean_collect’, inlined from ‘txn_complete_success’ at src/box/txn.c:836:2, inlined from ‘txn_limbo_complete’ at src/box/txn_limbo.c:205:3: src/lib/core/rmean.c:65:9: error: ‘__atomic_add_fetch_8’ writing 8 bytes into a region of size 0 overflows the destination [-Werror=stringop-overflow=] 65 | __atomic_add_fetch(&rmean->stats[name].value[0], value, __ATOMIC_RELAXED); | ^ In function ‘txn_limbo_complete’: lto1: note: destination object is likely at address zero ``` NO_WRAP The real reason should be investigated in the scope of #11517. The compilation warning may be suppressed, but it may also mask the actual problems in the future tests. The CMP0065 is removed from CMake version 4.0 [2]. Thus, this patch fixes the behaviour by setting the property `ENABLE_EXPORTS` for unit tests directly. [1]: https://cmake.org/cmake/help/latest/policy/CMP0065.html [2]: https://cmake.org/cmake/help/latest/manual/cmake-policies.7.html#policies-introduced-by-cmake-3-4-removed-by-cmake-4-0 NO_DOC=build NO_TEST=build NO_CHANGELOG=build (cherry picked from commit 2bde9262e)
63541 of 114904 branches covered (55.3%)
94475 of 109745 relevant lines covered (86.09%)
1913920.65 hits per line