@specs-feup/clava
v3.5.1
Published
A C/C++ source-to-source compiler written in Typescript
Readme
Clava-JS
Clava source-to-source compiler running on top of Node.js.
Current version only works on Node 20 and 22.
To test Clava-JS you can try the Clava project template.
Installing dev environment
Execute the following commands to build Clava-JS in a folder called workspace:
mkdir workspace
cd workspace
touch package.json
git clone https://github.com/specs-feup/specs-java-libs.git
git clone https://github.com/specs-feup/lara-framework.git
git clone https://github.com/specs-feup/clava.gitIn the workspace directory, edit the package.json file and add the following:
{
"type": "module",
"workspaces": [
"clava/Clava-JS",
"lara-framework/Lara-JS"
]
}Starting from the workspace directory, execute the following commands to build Clava-JS:
npm install
npm run build -w lara-framework/Lara-JS
npm run build -w clava/Clava-JS
npm install
cd clava/ClavaWeaver
gradle installDist
cd ../..Finally, copy the JARs in the folder ./clava/ClavaWeaver/build/install/ClavaWeaver/lib into a new folder called java-binaries in ./clava/Clava-JS:
mkdir clava/Clava-JS/java-binaries
cp -r ./clava/ClavaWeaver/build/install/ClavaWeaver/lib ./clava/Clava-JS/java-binariesInstall the package globally:
npm install -g @specs-feup/clavaIt should now be available as a command in the terminal:
npx clava classic <your CLI options, pass a non-existing flag, such as -dummy, to check the options>If you want to reflect local changes in Clava-JS (or Lara-JS) in the installed command, use the link option:
npm link @specs-feup/clavaExecuting Clava-JS
You can execute Clava-JS by running the following on your terminal
npx clava classic <scriptfile.js> -p "<c++ files or folders>"Additionally, if you would like to see the help menu
npx clava --helpor run in watch mode
npx clava classic <scriptfile.js> -w <directory/file to watch> -c <clava config file>To create a Clava config file, launch the Java-based GUI:
./clava/ClavaWeaver/build/install/ClavaWeaver/bin/ClavaWeaverDebugging
You can get debugging information using a DEBUG environment variable.
This variable is used by the debug module to determine what to expose.
DEBUG="*" npx clava classic <scriptfile.js> <your CLI options>CMake
Clava has a CMake package, check the link for more details on how to use it.
