{"id":13534972,"url":"https://github.com/personalrobotics/chimera","last_synced_at":"2025-08-29T08:09:39.368Z","repository":{"id":68800085,"uuid":"42157291","full_name":"personalrobotics/chimera","owner":"personalrobotics","description":":snake: A CLI tool for generating Boost.Python/pybind11 bindings from C/C++","archived":false,"fork":false,"pushed_at":"2020-08-22T14:19:49.000Z","size":995,"stargazers_count":14,"open_issues_count":55,"forks_count":1,"subscribers_count":45,"default_branch":"master","last_synced_at":"2025-04-02T00:35:33.446Z","etag":null,"topics":["boost-python","chimera","clang-toolchain","cli","cpp","llvm","mustache","pybind11","python"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/personalrobotics.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-09-09T05:07:06.000Z","updated_at":"2025-01-11T18:44:03.000Z","dependencies_parsed_at":"2023-03-10T07:30:22.325Z","dependency_job_id":null,"html_url":"https://github.com/personalrobotics/chimera","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/personalrobotics/chimera","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/personalrobotics%2Fchimera","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/personalrobotics%2Fchimera/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/personalrobotics%2Fchimera/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/personalrobotics%2Fchimera/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/personalrobotics","download_url":"https://codeload.github.com/personalrobotics/chimera/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/personalrobotics%2Fchimera/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272652385,"owners_count":24970576,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-29T02:00:10.610Z","response_time":87,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["boost-python","chimera","clang-toolchain","cli","cpp","llvm","mustache","pybind11","python"],"created_at":"2024-08-01T08:00:47.862Z","updated_at":"2025-08-29T08:09:39.348Z","avatar_url":"https://github.com/personalrobotics.png","language":"C++","readme":"# chimera\n\n[![C/C++ CI](https://github.com/personalrobotics/chimera/workflows/C/C++%20CI/badge.svg)](https://github.com/personalrobotics/chimera/actions)\n[![Build Status](https://travis-ci.org/personalrobotics/chimera.svg?branch=master)](https://travis-ci.org/personalrobotics/chimera)\n[![Build Status](https://dev.azure.com/personalrobotics/chimera/_apis/build/status/personalrobotics.chimera?branchName=master)](https://dev.azure.com/personalrobotics/chimera/_build/latest?definitionId=2\u0026branchName=master)\n[![codecov](https://codecov.io/gh/personalrobotics/chimera/branch/master/graph/badge.svg)](https://codecov.io/gh/personalrobotics/chimera)\n\n\u003e ##### chi·me·ra\n\u003e\n\u003e ##### /kīˈmirə,kəˈmirə/ [![speaker][2]][1]\n\u003e\n\u003e _*informal*, noun_\n\u003e\n\u003e 1.  a thing that is hoped or wished for but in fact is illusory or impossible to achieve.\n\u003e 2.  a utility to generate Boost.Python bindings for C++ code.\n\nChimera is a tool for generating Boost.Python/Pybind11 bindings from C/C++ header files.\nIt uses the Clang/LLVM toolchain, making it capable of automatically handling\nfairly complex source files.\n\n## Usage\n\n```bash\n$ ./chimera -c \u003cyaml_config_file\u003e -o \u003coutput_path\u003e my_cpp_header1.h my_cpp_header2.h -- [compiler args]\n```\n\n## Installation\n\n### On Ubuntu using `apt`\n\nChimera provides Ubuntu packages for Xenial (16.04 LTS), Bionic (18.04 LTS), Eoan (19.10), and Focal (20.04).\n\n**Xenial and greater**\n\n```shell\n$ sudo add-apt-repository ppa:personalrobotics/ppa\n$ sudo apt update\n$ sudo apt install chimera\n```\n\n### On macOS using Homebrew\n\n```shell\n# Install the Homebrew package manager\n$ /usr/bin/ruby -e \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)\"\n# Add Homebrew tap for Personal Robotics Lab software\n$ brew tap personalrobotics/tap\n# Install Chimera\n$ brew install chimera\n```\n\n## Build from Source\n\n### Requirements\n\n* libclang 6.0, 7, 8, 9\n* llvm 6.0, 7, 8, 9 (+ tools)\n* libedit\n* yaml-cpp\n* boost\n\n### On Ubuntu from Source\n\n#### Install Dependencies\n\n```bash\n$ sudo apt-get install llvm-6.0-dev llvm-6.0-tools libclang-6.0-dev libedit-dev \\\n$   libyaml-cpp-dev libboost-dev lib32z1-dev\n```\n\n#### Build Chimera\n\n```bash\n$ git clone https://github.com/personalrobotics/chimera.git\n$ cd chimera\n$ mkdir build \u0026\u0026 cd build\n$ cmake -DCMAKE_BUILD_TYPE=Release ..\n$ make\n$ sudo make install\n```\n\n### On macOS from Source\n\n```bash\n$ brew install boost llvm yaml-cpp\n$ brew install eigen  # for examples\n$ git clone https://github.com/personalrobotics/chimera.git\n$ cd chimera\n$ mkdir build \u0026\u0026 cd build\n$ PKG_CONFIG_PATH=$(brew --prefix yaml-cpp)/lib/pkgconfig cmake -DCMAKE_BUILD_TYPE=Release \\\n    -DLLVM_DIR=$(brew --prefix llvm)/lib/cmake/llvm ..\n$ make\n$ sudo make install\n```\n\n## Example\n\nLet's try running chimera on itself!\n\n```bash\n$ cd [PATH TO CHIMERA]\n$ rm -rf build \u0026\u0026 mkdir -p build \u0026\u0026 cd build\n$ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..\n$ make\n$ chimera -p . -o chimera_py_binding.cpp ../src/chimera.cpp\n```\n\n## Configuration\n\n```yaml\n# The C++ namespaces that will be extracted by Chimera\nnamespaces:\n  - dart::dynamics\n  - dart::math\n\n# Selected types that should have special handling.\n# (Not implemented yet.)\ntypes:\n  'class BodyNode':\n    convert_to: 'class BodyNodePtr'\n\n# Selected function and class declarations that need custom parameters.\nfunctions:\n  'const Eigen::Vector4d \u0026 ::dart::dynamics::Shape::getRGBA() const':\n    return_value_policy: copy_const_reference\n  'bool ::dart::dynamics::Skeleton::isImpulseApplied() const':\n    source: 'test.cpp.in'\n  'const Eigen::Vector3d \u0026 ::dart::dynamics::Shape::getBoundingBoxDim() const':\n    content: '/* Instead of implementing this function, insert this comment! */'\n  'Eigen::VectorXd \u0026 ::dart::optimizer::GradientDescentSolver::getEqConstraintWeights()': null\n    # This declaration will be suppressed.\n\nclasses:\n  '::dart::dynamics::Shape':\n    name: Shape\n    bases: []\n    noncopyable: true\n```\n\n## Troubleshooting\n\n### Is there a length limit for the keys in the configuration file of Chimera?\n\nYes. [`yaml-cpp` does not support more than 1024 characters for a single line\nkey](https://github.com/jbeder/yaml-cpp/blob/release-0.5.3/src/simplekey.cpp#L111).\nIf you want to use a longer key, then you should use [multi-line\nkey](http://stackoverflow.com/a/36295084).\n\n## License\n\nChimera is released under the 3-clause BSD license. See [LICENSE](./LICENSE) for more\ninformation.\n\n## Authors\n\nChimera is developed by Michael Koval ([**@mkoval**](https://github.com/mkoval)) and\nPras Velagapudi ([**@psigen**](https://github.com/psigen)), and it has received major\ncontributions from Jeongseok Lee ([**@jslee02**](https://github.com/jslee02)).\n\n[1]: http://audio.oxforddictionaries.com/en/mp3/chimera_gb_1.mp3\n[2]: https://upload.wikimedia.org/wikipedia/commons/7/74/Speaker_icon.svg\n","funding_links":[],"categories":["C/C++ to Python"],"sub_categories":["Boost.Python"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpersonalrobotics%2Fchimera","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpersonalrobotics%2Fchimera","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpersonalrobotics%2Fchimera/lists"}