You should have installed gcc and cmake
In ubuntu:
sudo apt install build-essential cmake m4
git submodule init
git submodule update
./build_gmp.sh host
make host
./build_gmp.sh host
make arm64_host
Install Android NDK from https://developer.android.com/ndk or with help of "SDK Manager" in Android Studio.
Set the value of ANDROID_NDK environment variable to the absolute path of Android NDK root directory.
Examples:
export ANDROID_NDK=/home/test/Android/Sdk/ndk/23.1.7779620 # NDK is installed by "SDK Manager" in Android Studio.
export ANDROID_NDK=/home/test/android-ndk-r23b # NDK is installed as a stand-alone package.
Compilation for arm64:
./build_gmp.sh android
make android
Compilation for x86_64:
./build_gmp.sh android_x86_64
make android_x86_64
Requirements: Xcode.
- Run:
./build_gmp.sh ios make ios
- Open generated Xcode project.
- Add compilation flag
-D_LONG_LONG_LIMB
to all build targets. - Add compilation flag
-DCIRCUIT_NAME=auth
,-DCIRCUIT_NAME=sig
and-DCIRCUIT_NAME=mtp
to the respective targets. - Compile witnesscalc.
- Compile a circuit with compile-circuit.sh script in circuits repo as usual.
- Replace existing .cpp and .dat files with generated ones (e.g. auth.cpp & auth.dat).
- Enclose all the code inside .cpp file with
namespace CIRCUIT_NAME
(do not replaceCIRCUIT_NAME
with the real name, it will be replaced at compilation), like this:#include ... #include ... namespace CIRCUIT_NAME { // millions of code lines here } // namespace
- Optional. Remove the
#include <assert.h>
line and replace all accurances ofassert(
withcheck(
in .cpp file to switch from asserts to exceptions (more secure).
Alternatively you can patch the .cpp
circuit file with a patch_cpp.sh
script. Example how to run it:
./patch_cpp.sh ../circuits/build/linkedMultiQuery10/linkedMultiQuery10_cpp/linkedMultiQuery10.cpp > ./src/linkedMultiQuery10.cpp
witnesscalc is part of the iden3 project copyright 2022 0KIMS association and published with GPL-3 license. Please check the COPYING file for more details.