-
Couldn't load subscription status.
- Fork 813
Fixes to prevent clang-diagnostic errors #643
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…oft Visual Studio cmake projects.
InBetweenNames
added a commit
to InBetweenNames/cereal
that referenced
this pull request
Oct 20, 2020
This prevents multiple definition errors in Clang, and also stops dllexporting functions with internal linkage. Degrades gracefully when C++17 is not present. Fix USCiLab#595 Fix USCiLab#652 Fix USCiLab#582 Fix USCiLab#643
InBetweenNames
added a commit
to InBetweenNames/cereal
that referenced
this pull request
Oct 20, 2020
This prevents multiple definition errors in Clang, and also stops dllexporting functions with internal linkage. Degrades gracefully when C++17 is not present. Fix USCiLab#595 Fix USCiLab#652 Fix USCiLab#582 Fix USCiLab#643
This was referenced Oct 28, 2020
InBetweenNames
added a commit
to InBetweenNames/cereal
that referenced
this pull request
Oct 28, 2020
This prevents multiple definition errors in Clang, and also stops dllexporting functions with internal linkage. Degrades gracefully when C++17 is not present. Fix USCiLab#595 Fix USCiLab#652 Fix USCiLab#582 Fix USCiLab#643
AzothAmmo
pushed a commit
that referenced
this pull request
May 5, 2021
arximboldi
pushed a commit
to arximboldi/cereal
that referenced
this pull request
Sep 7, 2021
* Fixes to prevent clang-diagnostic when running clang-tidy with Microsoft Visual Studio cmake projects. * Used boolean rather than bitwise operator.
arximboldi
pushed a commit
to arximboldi/cereal
that referenced
this pull request
Sep 7, 2021
This prevents multiple definition errors in Clang, and also stops dllexporting functions with internal linkage. Degrades gracefully when C++17 is not present. Fix USCiLab#595 Fix USCiLab#652 Fix USCiLab#582 Fix USCiLab#643
AzothAmmo
pushed a commit
to AzothAmmo/cereal
that referenced
this pull request
Nov 28, 2021
* Fixes to prevent clang-diagnostic when running clang-tidy with Microsoft Visual Studio cmake projects. * Used boolean rather than bitwise operator.
AzothAmmo
pushed a commit
to AzothAmmo/cereal
that referenced
this pull request
Nov 28, 2021
This prevents multiple definition errors in Clang, and also stops dllexporting functions with internal linkage. Degrades gracefully when C++17 is not present. Fix USCiLab#595 Fix USCiLab#652 Fix USCiLab#582 Fix USCiLab#643
julianharbarth
added a commit
to motis-project/cereal
that referenced
this pull request
Mar 14, 2023
* Fix json.hpp compilation issue when int32_t is a long (USCiLab#621) When testing whether or not to define a saveValue() overload for long, test the actual set of types implemented. * [cpp20] explicitly capture 'this' as copy (USCiLab#640) implicit 'this' capture is deprecated in C++20 * Fix rapidjson for Clang 10 (USCiLab#645) Based on Tencent/rapidjson#1679 Addresses USCiLab#631 * Fixes to prevent clang-diagnostic errors (USCiLab#643) * Fixes to prevent clang-diagnostic when running clang-tidy with Microsoft Visual Studio cmake projects. * Used boolean rather than bitwise operator. * cleanup cmake files to be a little more moderen (USCiLab#659) * cleanup cmake files to be a little more moderen keep the source tree free of build artifacts cmakelint the cmake files too * fix cmake setup errors on CI fix APPLE clang builds too * CI needs support for realy history cmake V3.6 fix typo in cmake files using add_test() commnds * One step more to use modern cmake Prevent to modifiy compile and linker FLAGS and to set global includes pathes * fix CI build problems with older cmake versions prepare cleanup cmake list file * final cleanup use Config.cmake.in and install hole cmake config files * Fix cpp17 PORTABILITY_TEST linker problem add missed target_link_libraries() * hopefully prevent windows test problems * Store a copy of each serialized shared_ptr within the archive to prevent the shared_ptr to be freed to early. (USCiLab#667) The archives use the memory address pointed by the shared_ptr as a unique id which must not be reused during lifetime of the archive. Therefore, the archives stores a copy of it. This problem was also reported as CVE-2020-11105. * add license files for components of cereal Signed-off-by: Adam Miartus <[email protected]> * Update README.md Fix link to main website * Catch short documents in JSON input When reading unnamed fields from JSON input, the member/value iterators are incremented blind without checking if the end of the iterator has been reached. Record the size so that this can be checked against the current position to ensure reading doesn't walk off the end of the iterator. * C++17: use inline globals for StaticObjects This prevents multiple definition errors in Clang, and also stops dllexporting functions with internal linkage. Degrades gracefully when C++17 is not present. Fix USCiLab#595 Fix USCiLab#652 Fix USCiLab#582 Fix USCiLab#643 * Use std::variant::emplace when loading * Use std::optional::emplace() when loading to construct and load the contained value directly in place * Fix itsNextName not clearing when not found An issue exists when loading vectors of objects where, if the last nvp of the previous object does not exist in the json file, the itsNextName variable within the json serializer is not cleared. This causes the vector serializer to search for that name next (when it should be searching for a nameless object.) The json serializer then throws during the named search. Mild reworking of itsNextName solution * Add github actions workflow use docker containers remove sudo install software-properties-common update before trying install install wget cmake and make install cmake from pip add apt-transport-https Use llvm xenial Fix clang package name Fix boost with gcc<5 verbose compile skip boost for gcc<5 macos test skip boost for macos test different xcode compilers use new cmake syntax for selecting platform no xcode 10 installed Rename tests * Update doctest to 2.4.6 dev + local fixes slated for upstream * Update appveyor to build with MSVC 2022 and fix boost * Fixed loading of std::vector<bool> We should use auto && instead of auto if we want to modify v inside the for loop. * Update license to match BSD template * Update doctest to 2.4.7, update CI, add badges Updates doctest and fixes issues with g++4.7 and MSVC2013 doctest builds. Adds new CI targets for g++ 9 and 10, clang 9 through 12. Adds CI badges for github actions. * Use GNUInstallDirs instead of hard wiring install directories On a multilib setup cmake files should go into lib64. * Update version to 1.3.1 * Make doxygen docs reproducible * Add CMake options for building doc and sandbox relates USCiLab#739 * Correct patch version for 1.3.2 * Fix long long json serialization (USCiLab#728) * Fix long long json serialization * Update pod.hpp * Update .gitignore `.vs/` folder is created by Visual Studio and it is not needed. * `ST` renamed to `AlignedStorage` * Remove extra ; after member function definition Triggered by -Wextra-semi. * add string_view to json archive --------- Signed-off-by: Adam Miartus <[email protected]> Co-authored-by: Bernard Blackham <[email protected]> Co-authored-by: Łukasz Gemborowski <[email protected]> Co-authored-by: groscoe2 <[email protected]> Co-authored-by: John Alexander <[email protected]> Co-authored-by: Claus Klein <[email protected]> Co-authored-by: Michael Walz <[email protected]> Co-authored-by: Adam Miartus <[email protected]> Co-authored-by: Shane Grant <[email protected]> Co-authored-by: John Keeping <[email protected]> Co-authored-by: Shane Peelar <[email protected]> Co-authored-by: logan <[email protected]> Co-authored-by: Gary Heckman <[email protected]> Co-authored-by: Isuru Fernando <[email protected]> Co-authored-by: Darred <[email protected]> Co-authored-by: Anton Blanchard <[email protected]> Co-authored-by: Michael R. Crusoe <[email protected]> Co-authored-by: CHP <[email protected]> Co-authored-by: Luca Ciucci <[email protected]> Co-authored-by: Jan Niklas Hasse <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When building projects with Visual Studio and cmake and in addition using clang-tidy we see clang-diagnostic errors in the cereal codebase during the clang-tidy execution. The binaries are built using the msvc compiler (visual studio 16.6.0, Microsoft (R) C/C++ Optimizing Compiler Version 19.26.28805 for x64), successfully. clang-tidy uses the llvm tool chain and thus the clang compiler (version 9.0.0).
This scenario occurs during the clang-tidy run. clang-tidy is executed using the build commands generated by cmake, as such _MSC_VER is defined even though the clang compiler is being utilised.
The following diagnostics are generated during the clang-tidy run:
C:\Src****************\out\build\Windows-x64-Debug_deps\cereal-src\package\include\cereal\details\static_object.hpp(67,29): error G70D0A859: 'cereal::detail::StaticObject<cereal::detail::bind_to_archives<datapath::udp_stream::send_session_configuration, cereal::detail::(anonymous namespace)::polymorphic_binding_tag> >' must have external linkage when declared 'dllexport' [clang-diagnostic-error]
class CEREAL_DLL_EXPORT StaticObject
^
And...
C:\Src******************\out\build\Windows-x64-Debug_deps\cereal-src\package\include\cereal\details\polymorphic_impl.hpp(658,91): error GD8FB81D5: unexpected type name 'type': expected expression [clang-diagnostic-error]
savePolymorphicSharedPtr( ar, ptr, ::cereal::traits::has_shared_from_this::type() ); // MSVC doesn't like typename here
......
A guard is required to prevent the un-versioned _MSC_VER test from being taken when compiling with clang under these circumstances. The clang compiler identifies itself using the clang pre-defined macro which can be used to provide a guard.