@specs-feup/clava
v3.0.2
Published
A C/C++ source-to-source compiler written in Typescript
Downloads
85
Readme
Clava-JS
Clava source-to-source compiler running on top of Node.js.
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.git
In 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 folder ./clava/ClavaWeaver/build/install/ClavaWeaver
into a new folder called java-binaries in ./clava/Clava-JS
:
mkdir clava/Clava-JS/java-binaries
cp -r ./clava/ClavaWeaver/build/install/ClavaWeaver ./clava/Clava-JS/java-binaries
Install the package globally:
npm install -g @specs-feup/clava
It 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/clava
Executing 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 --help
or 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/ClavaWeaver
Debugging
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.