Decouple Core lib and Python#131
Draft
woodtp wants to merge 6 commits into
Draft
Conversation
- tabs -> 2 spaces per style guide - foreach loop for the extension modules - clean up cpp_args - migrate c++ standard specification to project() - global project argument for `-DUSE_MPI` - Removed `-fPIC`. Meson handles this for us. - set default buildtype to 'release' in project() - can be overridden with `meson setup ... -Dbuildtype=debug` - Add `-march=native` global project argument, conditionally. - Since we don't distribute binaries and expect users to compile pyo3 for themselves, I don't see a reason not to include this flag as it can only help performance. At worst, it does nothing.
Overall restructuring so we don't ship more than necessary.
…er implementation. Previously, we were compiling one, monolithic shared library. In the revised meson.build, I've separated out compilation of the core from python extension modules and removed unnecessary interdependence. Bunch and Grid<N>D were reliant on the pyORBIT_MPI_Comm wrapper over MPI_Comm, which coupled C++ core behavior and python wrapper handling thereby preventing separation. Factored out common utility functions to ascertain Python types of pyorbit objects at runtime under src/core/type_accessors.cc. Renamed all instances of "Python.h" -> <Python.h>. This is probably better for Python.h, because the header typically exists at system lib paths, not in the project dir.
Switch to #include <...> in parity with Python.h
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
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.
The goal of this PR is to decouple the PyORBIT core and the Python wrapper logic to facilitate development of extensions, enable us to migrate to a different binding solution, e.g., nanobind, or potentially develop bindings for other languages.
meson.build has been configured to produce metadata for pkgconfig that will be installed under your chosen prefix:
<prefix>/lib/pkgconfig/pyorbit3.pc. This can be discovered by pkgconfig for external projects to properly find development headers and link against libpyorbit3.To install pyorbit in a conda environment:
meson setup build --prefix=$CONDA_PREFIX meson compile -C build meson install -C buildTo uninstall
cd build ninja uninstallAfter installation, headers can be found under
<prefix>/include/pyorbit3.TODO