Generate header in Rust build output directory
This commit is contained in:
parent
96ec5c1cb1
commit
a018cc389a
@ -19,7 +19,7 @@ set -euo pipefail
|
|||||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
RUST_DIR="$SCRIPT_DIR/rust"
|
RUST_DIR="$SCRIPT_DIR/rust"
|
||||||
HEADER_NAME="garnet_rs.h"
|
HEADER_NAME="garnet_rs.h"
|
||||||
HEADER="$RUST_DIR/$HEADER_NAME"
|
HEADER="$RUST_DIR/target/debug/$HEADER_NAME"
|
||||||
|
|
||||||
# --- Step 1: Build Rust static library ---
|
# --- Step 1: Build Rust static library ---
|
||||||
echo "=== Building Rust library ==="
|
echo "=== Building Rust library ==="
|
||||||
@ -66,7 +66,7 @@ echo " Patched header at $HEADER"
|
|||||||
echo "=== Configuring Cabal ==="
|
echo "=== Configuring Cabal ==="
|
||||||
cabal configure \
|
cabal configure \
|
||||||
--extra-lib-dirs="$RUST_DIR/target/debug" \
|
--extra-lib-dirs="$RUST_DIR/target/debug" \
|
||||||
--extra-include-dirs="$RUST_DIR"
|
--extra-include-dirs="$RUST_DIR/target/debug"
|
||||||
|
|
||||||
echo "=== Done ==="
|
echo "=== Done ==="
|
||||||
echo "Run 'cabal run' to test."
|
echo "Run 'cabal run' to test."
|
||||||
|
|||||||
@ -40,7 +40,7 @@ do
|
|||||||
<$> runIO (readProcessWithExitCode "cpp" ["-v"] "")
|
<$> runIO (readProcessWithExitCode "cpp" ["-v"] "")
|
||||||
withHsBindgen
|
withHsBindgen
|
||||||
def
|
def
|
||||||
{ clang = def{extraIncludeDirs = Pkg "rust" : systemDirs}
|
{ clang = def{extraIncludeDirs = Pkg "rust/target/debug" : systemDirs}
|
||||||
}
|
}
|
||||||
def
|
def
|
||||||
$ hashInclude "garnet_rs.h"
|
$ hashInclude "garnet_rs.h"
|
||||||
|
|||||||
@ -1,63 +0,0 @@
|
|||||||
#include <stdarg.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
struct T {
|
|
||||||
bool a;
|
|
||||||
uint8_t b;
|
|
||||||
};
|
|
||||||
|
|
||||||
enum Shape_Tag {
|
|
||||||
Circle,
|
|
||||||
Rectangle,
|
|
||||||
};
|
|
||||||
|
|
||||||
struct Circle_Body {
|
|
||||||
double radius;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct Rectangle_Body {
|
|
||||||
double width;
|
|
||||||
double height;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct Shape {
|
|
||||||
enum Shape_Tag tag;
|
|
||||||
union {
|
|
||||||
struct Circle_Body circle;
|
|
||||||
struct Rectangle_Body rectangle;
|
|
||||||
} body;
|
|
||||||
};
|
|
||||||
|
|
||||||
enum BTreeC_Tag {
|
|
||||||
Leaf,
|
|
||||||
Fork,
|
|
||||||
};
|
|
||||||
|
|
||||||
struct Leaf_Body {
|
|
||||||
int64_t value;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct Fork_Body {
|
|
||||||
const struct BTreeC *left;
|
|
||||||
const struct BTreeC *right;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct BTreeC {
|
|
||||||
enum BTreeC_Tag tag;
|
|
||||||
union {
|
|
||||||
struct Leaf_Body leaf;
|
|
||||||
struct Fork_Body fork;
|
|
||||||
} body;
|
|
||||||
};
|
|
||||||
|
|
||||||
void hello(const char *c);
|
|
||||||
|
|
||||||
void hello_struct(struct T t);
|
|
||||||
|
|
||||||
void hello_shape(struct Shape s);
|
|
||||||
|
|
||||||
__attribute__((const)) int64_t add(int64_t a, int64_t b);
|
|
||||||
|
|
||||||
int64_t sum_tree(struct BTreeC t);
|
|
||||||
Loading…
x
Reference in New Issue
Block a user