summaryrefslogtreecommitdiff
path: root/impls/monero.rs/scripts/build_monero_c.sh
blob: a92adfeaacea7c55fa883da7a774deb0e248635a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#!/bin/bash

set -x -e

# See https://github.com/MrCyjaneK/monero_c for the most up-to-date build docs,
# this is an example and a starting point for building monero_c for use in Rust
# but it should be automated either using CMake or Cargo (preferred).

# Detect architecture.
ARCH=$(uname -m)
OS=$(uname -s)

case $ARCH-$OS in
    x86_64-Linux)
        TARGET_ARCH="x86_64-linux-gnu"
        ;;
    i686-Linux)
        TARGET_ARCH="i686-linux-gnu"
        ;;
    aarch64-Linux)
        TARGET_ARCH="aarch64-linux-gnu"
        ;;
    x86_64-Android)
        TARGET_ARCH="x86_64-linux-android"
        ;;
    i686-Android)
        TARGET_ARCH="i686-linux-android"
        ;;
    aarch64-Android)
        TARGET_ARCH="aarch64-linux-android"
        ;;
    armv7l-Android)
        TARGET_ARCH="arm-linux-androideabi"
        ;;
    i686-Windows)
        TARGET_ARCH="i686-w64-mingw32"
        ;;
    x86_64-Windows)
        TARGET_ARCH="x86_64-w64-mingw32"
        ;;
    x86_64-Darwin)
        TARGET_ARCH="host-apple-darwin"
        ;;
    arm64-Darwin)
        TARGET_ARCH="host-apple-ios"
        ;;
    *)
        echo "Unsupported architecture: $ARCH on OS: $OS"
        exit 1
        ;;
esac

#../prepare_moneroc.sh
# See https://github.com/cypherstack/flutter_libmonero/blob/main/scripts/prepare_moneroc.sh
# flutter_libmonero/scripts/prepare_moneroc.sh:

if [[ ! -d "monero_c" ]];
then
    #rm -rf monero_c
    git clone https://github.com/sneurlax/monero_c --branch rust
fi
cd monero_c
#git checkout "6eb571ea498ed7b854934785f00fabfd0dadf75b"
git reset --hard
#git config submodule.libs/wownero.url https://git.cypherstack.com/Cypher_Stack/wownero
#git config submodule.libs/wownero-seed.url https://git.cypherstack.com/Cypher_Stack/wownero-seed
git submodule update --init --force --recursive
./apply_patches.sh monero
#./apply_patches.sh wownero

if [[ ! -f "monero/.patch-applied" ]];
then
    ./apply_patches.sh monero
fi

#if [[ ! -f "wownero/.patch-applied" ]];
#then
#    ./apply_patches.sh wownero
#fi

# flutter_libmonero/scripts/linux/build_all.sh cont. ...

pushd ../monero_c
    ./build_single.sh monero "$TARGET_ARCH" -j$(nproc)
    #./build_single.sh wownero "$TARGET_ARCH" -j$(nproc)
popd

unxz -f release/monero/${TARGET_ARCH}_libwallet2_api_c.so.xz
#unxz -f release/wownero/${TARGET_ARCH}_libwallet2_api_c.so.xz

# Navigate back to /scripts.
cd ..

# Copy the built .so file to a generic name.
SO_FILE="monero_c/release/monero/${TARGET_ARCH}_libwallet2_api_c.so"
if [[ -f "$SO_FILE" ]]; then
    cp "$SO_FILE" "../lib/libwallet2_api_c.so"
    echo "Copied $SO_FILE to libwallet2_api_c.so"
else
    echo "Error: $SO_FILE not found."
    exit 1
fi