build: macos and android fix

This commit is contained in:
ardocrat 2024-07-02 16:40:07 +03:00
parent f67aac23fc
commit 18138c9c66
5 changed files with 54 additions and 17 deletions

View file

@ -9,9 +9,21 @@ keywords = [ "crypto", "grin", "mimblewimble" ]
edition = "2021" edition = "2021"
build = "src/build/build.rs" build = "src/build/build.rs"
[[bin]]
name = "grim-bin"
path = "src/main.rs"
[lib] [lib]
name="grim" name="grim"
crate_type=["cdylib", "rlib"] crate-type = ["rlib"]
[profile.release-apk]
inherits = "release"
strip = true
opt-level = "z"
lto = true
codegen-units = 1
panic = "abort"
[dependencies] [dependencies]
log = "0.4" log = "0.4"

View file

@ -18,7 +18,7 @@ To build and run application go to project directory and run:
``` ```
cargo build --release cargo build --release
./target/release/grim ./target/release/grim-bin
``` ```
### Android ### Android

View file

@ -1,10 +1,11 @@
#!/bin/bash #!/bin/bash
set -e
case $1 in case $1 in
x86|arm) x86|arm|all)
;; ;;
*) *)
echo "Usage: release_macos.sh [platform]\n - platform: 'x86', 'arm'" >&2 echo "Usage: release_macos.sh [platform]\n - platform: 'x86', 'arm', 'all'" >&2
exit 1 exit 1
esac esac
@ -23,23 +24,31 @@ BASEDIR=$(cd $(dirname $0) && pwd)
cd ${BASEDIR} cd ${BASEDIR}
cd .. cd ..
# Setup platform argument # Setup platform
rustup target add x86_64-apple-darwin
rustup target add aarch64-apple-darwin
rm -rf target/x86_64-apple-darwin
rm -rf target/aarch64-apple-darwin
[[ $1 == "x86" ]] && arch+=(x86_64-apple-darwin) [[ $1 == "x86" ]] && arch+=(x86_64-apple-darwin)
[[ $1 == "arm" ]] && arch+=(aarch64-apple-darwin) [[ $1 == "arm" ]] && arch+=(aarch64-apple-darwin)
[[ $1 == "all" ]] && arch+=(universal2-apple-darwin)
# Start release build with zig linker for cross-compilation # Start release build with zig linker for cross-compilation
cargo install cargo-zigbuild # zig 0.12 required
cargo install cargo-zigbuild@0.18.4
cargo zigbuild --release --target ${arch} cargo zigbuild --release --target ${arch}
rm .intentionally-empty-file.o rm -rf .intentionally-empty-file.o
yes | cp -rf target/${arch}/release/grim macos/Grim.app/Contents/MacOS/grim-bin yes | cp -rf target/${arch}/release/grim-bin macos/Grim.app/Contents/MacOS
### Sign .app before distribution: ### Sign .app resources:
### rcodesign generate-self-signed-certificate #rcodesign generate-self-signed-certificate
### rcodesign sign --pem-file cert.pem macos/Grim.app #rcodesign sign --pem-file cert.pem macos/Grim.app
# Create release package # Create release package
FILE_NAME=Grim-0.1.0-macos-$1.zip FILE_NAME=Grim-0.1.0-macos-$1.zip
rm target/${arch}/release/${FILE_NAME} rm -rf target/${arch}/release/${FILE_NAME}
cd macos cd macos
zip -r ${FILE_NAME} Grim.app zip -r ${FILE_NAME} Grim.app
mv ${FILE_NAME} ../target/${arch}/release mv ${FILE_NAME} ../target/${arch}/release

View file

@ -24,7 +24,7 @@ cd ..
# Setup release argument # Setup release argument
type=$1 type=$1
[[ ${type} == "release" ]] && release_param+=(--release) [[ ${type} == "release" ]] && release_param="--profile release-apk"
# Setup platform argument # Setup platform argument
[[ $2 == "v7" ]] && arch+=(armeabi-v7a) [[ $2 == "v7" ]] && arch+=(armeabi-v7a)
@ -39,12 +39,29 @@ type=$1
[[ $2 == "v8" ]] && rustup target install aarch64-linux-android [[ $2 == "v8" ]] && rustup target install aarch64-linux-android
# Build native code # Build native code
mkdir -p android/app/src/main/jniLibs
cargo install cargo-ndk cargo install cargo-ndk
rm -rf target/aarch64-linux-android
rm -rf target/armv7-linux-androideabi
mkdir -p android/app/src/main/jniLibs
sed -i -e 's/"rlib"/"rlib","cdylib"/g' Cargo.toml
# temp fix for https://stackoverflow.com/questions/57193895/error-use-of-undeclared-identifier-pthread-mutex-robust-cargo-build-liblmdb-s
success=0
export CPPFLAGS="-DMDB_USE_ROBUST=0" && export CFLAGS="-DMDB_USE_ROBUST=0"
cargo ndk -t ${arch} -o android/app/src/main/jniLibs build ${release_param} cargo ndk -t ${arch} -o android/app/src/main/jniLibs build ${release_param}
unset CPPFLAGS && unset CFLAGS
cargo ndk -t ${arch} -o android/app/src/main/jniLibs build ${release_param}
if [ $? -eq 0 ]
then
success=1
fi
sed -i -e 's/"rlib","cdylib"/"rlib"/g' Cargo.toml
# Build Android application and launch at all connected devices # Build Android application and launch at all connected devices
if [ $? -eq 0 ] if [ $success -eq 1 ]
then then
cd android cd android

View file

@ -14,8 +14,6 @@
#![windows_subsystem = "windows"] #![windows_subsystem = "windows"]
use egui::os::OperatingSystem;
pub fn main() { pub fn main() {
#[allow(dead_code)] #[allow(dead_code)]
#[cfg(not(target_os = "android"))] #[cfg(not(target_os = "android"))]
@ -37,6 +35,7 @@ fn real_main() {
use std::sync::Arc; use std::sync::Arc;
use egui::pos2; use egui::pos2;
use egui::os::OperatingSystem;
use eframe::icon_data::from_png_bytes; use eframe::icon_data::from_png_bytes;
let platform = Desktop::default(); let platform = Desktop::default();