feat: Add C++ modules support and update nlohmann::json#1530
feat: Add C++ modules support and update nlohmann::json#1530mikomikotaishi wants to merge 3 commits intobrainboxdotcc:devfrom
Conversation
✅ Deploy Preview for dpp-dev ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
e91eaa8 to
121eb9b
Compare
Mishura4
left a comment
There was a problem hiding this comment.
Thanks for the PR! Good stuff. Just gonna prefer the approach with including dpp.h in the module for maintainability, as discussed in https://discord.com/channels/825407338755653642/825411104208977952/1454456223952011427
braindigitalis
left a comment
There was a problem hiding this comment.
some module related unit tests would be good. not repeating a thousand lines of code in dpp.cppm is an absolute must, as @Mishura4 also said.
|
I've looked at the |
|
I think that in this case you might want to make a new .cpp under the unittests folder which imports dpp instead of #including it. it can have some test functions that are exported and called via standard approaches from the main unittest file. |
1909f3f to
7f6fb23
Compare
|
I think this should fix the errors we're encountering. It's with the build system configuration |
|
you cant just do -DDPP_MODULES=ON for the entire CI matrix. Some CI's use older g++ (which we support) and some use C++17. |
|
Then is it possible to disable the modules unit tests for C++17 CI tests? |
|
@braindigitalis I think the modules CI should just be in a totally separate CI. It requires Ninja, as CMake can't build modules with Makefiles. |
|
unit tests only run in one g++, which is g++-12. This is the one which is packaged. we cant and dont run unit tests on them all, as the unit tests connect to discord and we cant do this concurrently. |
|
Updated Title to match code standards |
|
Hmm, this problem with the standard library has to do with symbols having internal linkage. They fixed most of this in GCC 15, because that's when they shipped module std. Let me try it with Ubuntu 25.10 and GCC 15 |
9d0c210 to
cc1e8db
Compare
|
Since you're having issues with g++-14 (which makes no sense because I can build g++-14 modules fine locally), just use a clang version that's supported (pretty sure clang15 has modules, but use clang18). Make sure you set the CXX for the env on both builds and then the apt install too 🫡 |
|
I have no idea why this current error is happening seeing as it never happened on my end, though I built mine in Clang 21. |
|
Seems it's a clang18 issue 🙃 , change to clang20 |
b3a12cd to
c241af2
Compare
library/CMakeLists.txt
Outdated
| endif() | ||
| if(BUILD_SHARED_LIBS) | ||
| if (DPP_MODULES) | ||
| target_link_libraries(${testname} PUBLIC dpp_module) |
There was a problem hiding this comment.
Can't we set it up so that target_link_libraries(${testname} PUBLIC dpp) brings the module, as discussed on the discord?
There was a problem hiding this comment.
I think my current revision fixes this, but please review and let me know if it is acceptable.
|
Im rather confused why the CI keeps saying |
This pull request adds support for C++20 modules.
In order to accomplish this, some constants were changed to using external linkage. I have also updated nlohmann/json to version 3.12.0, as the older version declares some symbols as internal.
Code change checklist