diff options
| author | Josh Ferrell <josh@vector35.com> | 2025-09-01 17:47:08 -0400 |
|---|---|---|
| committer | Josh Ferrell <josh@vector35.com> | 2025-09-01 17:47:08 -0400 |
| commit | eef93b932844110cf19a4b2741b528623b77998e (patch) | |
| tree | b8c89a56e603dc837d3fe48a33aa619baf2e7d4a /cmake | |
| parent | 42fd7435e2713181facfc6d4f54b42bdaa1d2825 (diff) | |
Add option to build rust api without linking to core
Diffstat (limited to 'cmake')
| -rw-r--r-- | cmake/generate_stubs.py | 121 |
1 files changed, 0 insertions, 121 deletions
diff --git a/cmake/generate_stubs.py b/cmake/generate_stubs.py deleted file mode 100644 index 5478ba7c..00000000 --- a/cmake/generate_stubs.py +++ /dev/null @@ -1,121 +0,0 @@ -# Copyright (c) 2015-2025 Vector 35 Inc -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. - -# Based on BinExport - -# Copyright 2011-2024 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import os -import re -import sys - -parser = argparse.ArgumentParser(sys.argv[0]) -parser.add_argument("core_header") -parser.add_argument("build_dir") - -options = parser.parse_args() - -print(f"GENERATE STUBS: {options.core_header} -> {options.build_dir}") -print(f"{sys.executable} {' '.join(sys.argv)}") - -os.makedirs(options.build_dir, exist_ok=True) -output_source = os.path.join(options.build_dir, 'stubs.cpp') - -with open(output_source, 'w') as stubs: - stubs.write(""" -// Copyright (c) 2015-2025 Vector 35 Inc -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to -// deal in the Software without restriction, including without limitation the -// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -// sell copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -// IN THE SOFTWARE. - -// Based on BinExport - -// Copyright 2011-2024 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#define BINARYNINJACORE_LIBRARY -#include "binaryninjacore.h" -#undef BINARYNINJACORE_LIBRARY - -extern "C" { -""") - - with open(options.core_header, 'r') as header: - header_conts = header.read() - - # Quick preprocess of comments in case we have commented defs - header_conts = re.sub(r'//.*\n', '\n', header_conts) - - # Pull out all core api functions to generate stubs - for match in re.finditer( - r'(?m:)\t(BINARYNINJACOREAPI [^;]*);', - header_conts - ): - group = match.group(1) - - # Void functions don't have a return (TODO: breaks if we ever return a fn ptr) - void_group = re.search(r'(?m:)BINARYNINJACOREAPI\s+void\s+.*', group) - if void_group is not None: - stubs.write(f'{match.group(1)} {{ }}\n') - else: - stubs.write(f'{match.group(1)} {{ return {{ }}; }}\n') - - stubs.write(""" -} - """) |
