1
0
Files
libcmo21/Assets/CodeGen/BMapBinder/README.md

2.5 KiB

BMap Binder

A helper program to generate BMap binding for Python, C# and Rust.

Usage

This program is consisted by 3 parts: ExpFcts Extractor, ExpFcts Analyzer and ExpFcts Render.

"ExpFcts" is stand for "Exported Functions".

Setup Environment

First we stay at the root directory of this project (this README file located). And execute set BMAP_BINDER_ROOT=$(pwd) on POSIX-like OS, or set BMAP_BINDER_ROOT=%CD% on Windows, to set environment variable. This environment variable will be used later by 3 parts conststing this project.

Then we navigate to the root directory of this repository (where you can find top-level CMakeLists.txt file). And execute set LIBCMO21_REPO_ROOT=$(pwd) on POSIX-like OS, or set LIBCMO21_REPO_ROOT=%CD% on Windows, to set environment variable. This environment variable also will be used later.

ExpFcts Extractor

We should first run ExpFcts Extractor to extract BMap exported function declarations fron header file. BMap header file include various contents, not only the declaration of exported functions, but also many of other utilities. We use regex to extract BMap exported function declarations only to avoid build a complete C lexer and parser in following steps and make our work easier.

For running this program, please following these steps:

  • Enter ExpFctsExtractor directory and setup it with Astral UV.
  • Execute uv run main.py to run program.
  • Program will process BMap header file BMExports.hpp from BMap project located in root directory of this repository, and output extracted text to Extracted directory with name BMExports.hpp.

ExpFcts Analyzer

Now we can run ExpFcts Analyzer to analyze extracted BMap exported function declarations.

Build

Enter ExpFctsAnalyzer directory, and execute following command to generate Antlr lexer and parser:

antlr4 ExpFctsLexer.g4
antlr4 ExpFctsParser.g4

Keep staying that directory, and execute following command to build Java code.

javac *.java

Run

Keep staying this directory, and execute following command to run program.

java MainRunner

After running, program will process input file BMExports.hpp located in Extracted directory, and output JSON file to Analyzed directory with name BMExports.json.

ExpFcts Render

  • Enter ExpFctsRender directory and setup it with Astral UV.
  • Execute uv run main.py to run program.
  • Program will process JSON file BMExports.json located in Analyzed directory, and output final artifacts to Output directory.