From 67eb9cabe53d13a7d17b27bd78e00f378104ae50 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Fri, 24 Nov 2023 20:10:24 +0100 Subject: build: package Z3 solver native libraries --- z3/gradle.properties | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 z3/gradle.properties (limited to 'z3/gradle.properties') diff --git a/z3/gradle.properties b/z3/gradle.properties new file mode 100644 index 00000000..3ef49dc6 --- /dev/null +++ b/z3/gradle.properties @@ -0,0 +1,9 @@ +# SPDX-FileCopyrightText: 2023 The Refinery Authors +# +# SPDX-License-Identifier: Apache-2.0 + +file.encoding=UTF-8 +group=tools.refinery.z3 +org.gradle.configuration-cache=false +org.gradle.parallel=true +version=4.12.2 -- cgit v1.2.3-54-g00ecf From 8eb8959c8bac379d738afb9a4643b2eb0b5bdb3a Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Mon, 25 Dec 2023 21:49:08 +0100 Subject: chore(z3): bump to z3 4.12.6 We still have to build Z3 for linux-aarch64, because the official release requires glibc 2.35 (and the corresponding libstdc++), while Amazon Linux 2023 only supports glibc 2.34. Also enabled optimization flags from Amazon Linux 2023 for the aarch64 Z3 build. This tecnically excludes older armv8-a platforms (like Raspberry Pi 4), but most modern SBC (like Raspberry Pi 5) already support armv8.2-a+crypto. At any rate, the need to run Refinery on such paltforms in unlikely. At any rate, the build flags should be supported on Neoverse N1-based cloud providers (including Amazon and Hetzner), as well as Apple M devices (armv8.5-a). --- z3/docker/build_in_docker.sh | 8 ++++++-- z3/docker/cross_build.sh | 3 +-- z3/gradle.properties | 2 +- z3/gradle/libs.versions.toml | 6 +++--- .../main/resources/z3java-linux-aarch64/libz3.so | Bin 29479296 -> 30654912 bytes .../z3java-linux-aarch64/libz3.so.license | 2 +- .../resources/z3java-linux-aarch64/libz3java.so | Bin 295952 -> 308224 bytes .../z3java-linux-aarch64/libz3java.so.license | 2 +- 8 files changed, 13 insertions(+), 10 deletions(-) (limited to 'z3/gradle.properties') diff --git a/z3/docker/build_in_docker.sh b/z3/docker/build_in_docker.sh index cd28bd32..549e823d 100755 --- a/z3/docker/build_in_docker.sh +++ b/z3/docker/build_in_docker.sh @@ -15,7 +15,11 @@ apt-get install -y python3 make gcc-aarch64-linux-gnu g++-aarch64-linux-gnu unzi wget "https://github.com/Z3Prover/z3/archive/refs/tags/z3-${z3_version}.zip" unzip "z3-${z3_version}.zip" cd "z3-z3-${z3_version}" -CXX=aarch64-linux-gnu-g++ CC=aarch64-linux-gnu-gcc python3 scripts/mk_unix_dist.py -f --nodotnet --arch=arm64 +export CC=aarch64-linux-gnu-gcc +export CXX=aarch64-linux-gnu-g++ +# See https://docs.aws.amazon.com/linux/al2023/ug/performance-optimizations.html +export CFLAGS="-march=armv8.2-a+crypto -mtune=neoverse-n1 -ftree-vectorize" +export CXXFLAGS="${CFLAGS}" +python3 scripts/mk_unix_dist.py -f --nodotnet --arch=arm64 cp --preserve=all "./dist/z3-${z3_version}-arm64-glibc-2.31/bin"/*.so /data/out/ chown "${target_uid}:${target_gid}" /data/out/* - diff --git a/z3/docker/cross_build.sh b/z3/docker/cross_build.sh index fe5edd2f..522d5c02 100755 --- a/z3/docker/cross_build.sh +++ b/z3/docker/cross_build.sh @@ -11,6 +11,5 @@ z3_version="$(grep '^version=' ../gradle.properties | cut -d'=' -f2)" rm -rf out mkdir out docker run --platform linux/amd64 --rm -it -v "${PWD}:/data" --entrypoint /bin/bash docker.io/eclipse-temurin:17-jdk-focal /data/build_in_docker.sh "${z3_version}" "$(id -u)" "$(id -g)" -rm -rf ../subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/* +rm -rf ../subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/*.so cp ./out/* ../subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/ - diff --git a/z3/gradle.properties b/z3/gradle.properties index 3ef49dc6..73b4d596 100644 --- a/z3/gradle.properties +++ b/z3/gradle.properties @@ -6,4 +6,4 @@ file.encoding=UTF-8 group=tools.refinery.z3 org.gradle.configuration-cache=false org.gradle.parallel=true -version=4.12.2 +version=4.12.6 diff --git a/z3/gradle/libs.versions.toml b/z3/gradle/libs.versions.toml index 88cf8083..7c6c5ad7 100644 --- a/z3/gradle/libs.versions.toml +++ b/z3/gradle/libs.versions.toml @@ -3,13 +3,13 @@ # SPDX-License-Identifier: Apache-2.0 [versions] -junit = "5.10.1" +junit = "5.10.2" [libraries] asm = { group = "org.ow2.asm", name = "asm", version = "9.6" } -jna = { group = "net.java.dev.jna", name = "jna", version = "5.13.0" } +jna = { group = "net.java.dev.jna", name = "jna", version = "5.14.0" } junit-api = { group = "org.junit.jupiter", name = "junit-jupiter-api", version.ref = "junit" } junit-engine = { group = "org.junit.jupiter", name = "junit-jupiter-engine", version.ref = "junit" } [plugins] -versions = { id = "com.github.ben-manes.versions", version = "0.50.0" } +versions = { id = "com.github.ben-manes.versions", version = "0.51.0" } diff --git a/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3.so b/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3.so index f7013e4f..574ee3ab 100755 Binary files a/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3.so and b/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3.so differ diff --git a/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3.so.license b/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3.so.license index 6f1e5a96..0993dbf7 100644 --- a/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3.so.license +++ b/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3.so.license @@ -2,5 +2,5 @@ Copyright (c) Microsoft Corporations SPDX-License-Identifier: MIT -This file was created from the Z3 4.12.2 release sources using the +This file was created from the Z3 4.12.6 release sources using the z3/docker/cross_build.sh script in this repository. diff --git a/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3java.so b/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3java.so index e37c7cdb..aace2c30 100755 Binary files a/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3java.so and b/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3java.so differ diff --git a/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3java.so.license b/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3java.so.license index 6f1e5a96..0993dbf7 100644 --- a/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3java.so.license +++ b/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3java.so.license @@ -2,5 +2,5 @@ Copyright (c) Microsoft Corporations SPDX-License-Identifier: MIT -This file was created from the Z3 4.12.2 release sources using the +This file was created from the Z3 4.12.6 release sources using the z3/docker/cross_build.sh script in this repository. -- cgit v1.2.3-54-g00ecf