-
Notifications
You must be signed in to change notification settings - Fork 140
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
feat: add CMake support + build on Clang/Windows + build on C++20 + build on Windows ARM64 #28
Conversation
5677ed7
to
3d8e3b8
Compare
2c4ca30
to
7667ea4
Compare
c0274d0
to
e56b6d8
Compare
This adds the dirent library for windows + clang. https://github.com/tronkko/dirent
Update CMakeLists.txt
Fixes ``` /home/aminya/opennurbs/opennurbs_statics.cpp:747:21: error: uninitialized const ‘ON_AngleValue::Unset’ [-fpermissive] 747 | const ON_AngleValue ON_AngleValue::Unset ON_CLANG_CONSTRUCTOR_BUG_INIT(ON_AngleValue); | ^~~~~~~~~~~~~ In file included from /home/aminya/opennurbs/opennurbs.h:81, from /home/aminya/opennurbs/opennurbs_statics.cpp:1: /home/aminya/opennurbs/opennurbs_string_value.h:274:16: note: ‘const class ON_AngleValue’ has no user-provided default constructor 274 | class ON_CLASS ON_AngleValue | ^~~~~~~~~~~~~ /home/aminya/opennurbs/opennurbs_string_value.h:277:3: note: constructor is not user-provided because it is explicitly defaulted in the class body 277 | ON_AngleValue() = default; | ^~~~~~~~~~~~~ ```
@dalefugier The Microsoft/vcpkg team wants to see if @mcneel plans to merge this pull request. Otherwise, they will use my fork. |
@aminya - this specific PR is not going to be merged directly into openNURBS. It contains too many changes, and we're not comfortable accepting all of of them. We will evaluate some of the changes you've made and see if they can be integrated into our private version of openNURBS, which is used by Rhino. If so, they will show up here when we publish updates to this, the open source version. Also, adding CMake support is on our to-list. This is something we want to do. As for additional compiler support, we'd need to run a number of tests to verify the integrity of file I/O before publishing. Feel free to contact me, [email protected], if you have any questions. Thanks, -- Dale |
Microsoft is going to use an unofficial fork for their vcpkg distribution? This is a big PR and there are several modifications that I am not comfortable with which I would like to spend time investigating. The first set of issues I see are
I appreciate the work, but we need to step back and try to tackle this in much smaller and manageable bits. |
Thanks for the responses. I have included the rationale behind each of the changes in the pull request description. To remove any confusion, the exact compiler error for each of the changes is included. The changes are tested in the Microsoft Azure CI system, which I have included the link for it in the above description. Unlike some of the commits I saw in this repository, I used bit-sized commits and included the description for each change following conventional commit messages. So if you want me to break them down into separate pull requests, I will do so. |
We do occasional large commits from our private repo version of opennurbs to keep things in sync. This is why you see some large commits. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you so much for this pull request. Your description of the changes is very detailed and makes sense.
I am surprised that the maintainers of this repository say that these are not explained enough.
Our team has been using OpenNURBS in production for a long time, and we were always wondering why @mcneel does not use this repository, and it is just a place for dumping whatever they use in private. Open-source programming is not just about adding an "Open" prefix to the name. It also means being open to the contribution of external people.
If @mcneel does not plan to merge these changes, our team will switch to this alternative fork.
The "open" is openNURBS indicates that Rhino's 3dm file format is open and not proprietary. So open that we provide the same source code, used by Rhino, for reading and writing this file format. We first made the source code to openNURBS available in 2000, and it used to be distributed by way of a zip file. We had several requests for distribution via GitHub repository. So here it is. We do accept pull requests. Each one is carefully deliberated and extensively tested, as the integrity of 3dm file reading and writing is paramount. This pull request was rejected for the reason's we've already mentioned. However, you're welcome to fork this repository - you won't be the first. -- Dale |
@aminya please break this down into separate pull requests. There is too much change here to be able to review and merge with any level of confidence. |
Sure, I will do so in a few days. I will split the changes into a few separate pull requests. |
I have split this into 7 independent pull requests as you requested:
#29 #30 #31 #32 #33 #34 #35
opennurbs_gl
whereON_Material::MaxShine
which is a constant was being called as a function.dirent
header file for Windows/Clang so that OpenNURBS can be builtshraed_ptr.unique
withshared_ptr.use_count == 1
https://en.cppreference.com/w/cpp/memory/shared_ptr/unique
unsigned int
to the enums:_M_ARM64
) and fixing some string conversions such as:✅ Successfully tested on:
There is also a pull request to add
vcpkg
support for opennurbs based on the current pull requestmicrosoft/vcpkg#21521
Here is the Azure pipeline of vcpkg testing the builds:
https://dev.azure.com/vcpkg/public/_build/results?buildId=63424&view=results