diff --git a/Dockerfile.source b/Dockerfile.source index c67cd82..48a8244 100644 --- a/Dockerfile.source +++ b/Dockerfile.source @@ -106,7 +106,7 @@ RUN ./build.sh -o qclient && cp qclient /usr/bin # Build and install QCL sidecar WORKDIR /opt/ceremonyclient/bedlam -RUN ./build.sh -o sidecar apps/garbled && cp sidecar /usr/bin +RUN ./build.sh -o sidecar ./apps/garbled && cp sidecar /usr/bin # Allows exporting single binary FROM scratch as qclient diff --git a/Taskfile.yaml b/Taskfile.yaml index 4e5a146..2a32e38 100644 --- a/Taskfile.yaml +++ b/Taskfile.yaml @@ -39,6 +39,12 @@ tasks: - verenc/generate.sh - node/build.sh -o build/arm64_macos/node + build_sidecar_arm64_macos: + desc: Build the Quilibrium QCL sidecar binary for MacOS ARM. Assumes it's ran from the same platform. Outputs to node/build. + cmds: + - ferret/generate.sh + - bedlam/build.sh -o build/arm64_macos/sidecar ./bedlam/apps/garbled + build_qclient_arm64_macos: desc: Build the QClient node binary for MacOS ARM. Outputs to client/build cmds: @@ -51,6 +57,11 @@ tasks: cmds: - docker build --platform linux/arm64 -f Dockerfile.source --output node/build/arm64_linux --target=node . + build_sidecar_arm64_linux: + desc: Build the Quilibrium QCL sidecar binary for ARM64 Linux. Outputs to node/build. + cmds: + - docker build --platform linux/arm64 -f Dockerfile.source --output node/build/arm64_linux --target=sidecar . + build_qclient_arm64_linux: desc: Build the QClient node binary for ARM64 Linux. Outputs to client/build. cmds: @@ -61,6 +72,11 @@ tasks: cmds: - docker build --platform linux/amd64 -f Dockerfile.source --output node/build/amd64_linux --target=node . + build_sidecar_amd64_linux: + desc: Build the Quilibrium QCL sidecar binary for AMD64 Linux. Outputs to node/build. + cmds: + - docker build --platform linux/amd64 -f Dockerfile.source --output node/build/amd64_linux --target=sidecar . + build_node_amd64_avx512_linux: desc: Build the Quilibrium node binary for AMD64 Linux with AVX-512 extensions. Outputs to node/build. cmds: diff --git a/bedlam/apps/garbled/garbler b/bedlam/apps/garbled/garbler deleted file mode 100755 index cb635e9..0000000 Binary files a/bedlam/apps/garbled/garbler and /dev/null differ diff --git a/bedlam/build.sh b/bedlam/build.sh index 03df23b..3b6627c 100755 --- a/bedlam/build.sh +++ b/bedlam/build.sh @@ -26,7 +26,7 @@ case "$os_type" in fi ;; "Linux") - export CGO_LDFLAGS="-L/usr/local/lib -ldl -lm -L$BINARIES_DIR -lcrypto -lssl -static" + export CGO_LDFLAGS="-L/usr/local/lib -ldl -lm -L$BINARIES_DIR -lstdc++ -lcrypto -lssl -lferret -static" go build -ldflags "-linkmode 'external'" "$@" ;; *) diff --git a/crates/ferret/build.rs b/crates/ferret/build.rs index 7cd8074..a0b2f7b 100644 --- a/crates/ferret/build.rs +++ b/crates/ferret/build.rs @@ -34,16 +34,19 @@ fn main() { cc::Build::new() .cpp(true) .flag_if_supported("-std=c++17") + .flag_if_supported("-march=armv8-a+crypto") .file("emp_bridge.cpp") .flag("-I/usr/local/include/emp-tool/") .flag("-I/usr/local/include/emp-ot/") .flag("-I/usr/include/openssl/") + .flag("-L/usr/local/lib/") .flag("-L/usr/local/lib/aarch64-linux-gnu/") .flag("-L/usr/lib/aarch64-linux-gnu/openssl/") .warnings(false) .compile("emp_bridge"); println!("cargo:rustc-link-search=native=/usr/local/lib/aarch64-linux-gnu"); + println!("cargo:rustc-link-search=native=/usr/local/lib/"); println!("cargo:rustc-link-lib=static=emp-tool");