diff --git a/.github/workflows/depends.yml b/.github/workflows/depends.yml index aafb8e56a..c6d42f3fa 100644 --- a/.github/workflows/depends.yml +++ b/.github/workflows/depends.yml @@ -31,36 +31,47 @@ jobs: toolchain: - name: "RISCV 64bit" host: "riscv64-linux-gnu" + rust_host: "riscv64gc-unknown-linux-gnu" packages: "python3 gperf g++-riscv64-linux-gnu" - name: "ARM v7" host: "arm-linux-gnueabihf" + rust_host: "armv7-unknown-linux-gnueabihf" packages: "python3 gperf g++-arm-linux-gnueabihf" - name: "ARM v8" host: "aarch64-linux-gnu" + rust_host: "aarch64-unknown-linux-gnu" packages: "python3 gperf g++-aarch64-linux-gnu" - name: "i686 Win" host: "i686-w64-mingw32" + rust_host: "i686-pc-windows-gnu" packages: "python3 g++-mingw-w64-i686" - name: "i686 Linux" host: "i686-pc-linux-gnu" + rust_host: "i686-unknown-linux-gnu" packages: "gperf cmake g++-multilib python3-zmq" - name: "Win64" host: "x86_64-w64-mingw32" + rust_host: "x86_64-pc-windows-gnu" packages: "cmake python3 g++-mingw-w64-x86-64" - name: "x86_64 Linux" host: "x86_64-unknown-linux-gnu" + rust_host: "x86_64-unknown-linux-gnu" packages: "gperf cmake python3-zmq libdbus-1-dev libharfbuzz-dev" - name: "Cross-Mac x86_64" host: "x86_64-apple-darwin" + rust_host: "x86_64-apple-darwin" packages: "cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools python-dev python3-setuptools-git" - name: "Cross-Mac aarch64" host: "aarch64-apple-darwin" + rust_host: "aarch64-apple-darwin" packages: "cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools python-dev python3-setuptools-git" - name: "x86_64 Freebsd" host: "x86_64-unknown-freebsd" + rust_host: "x86_64-unknown-freebsd" packages: "clang-8 gperf cmake python3-zmq libdbus-1-dev libharfbuzz-dev" - name: "ARMv8 Android" host: "aarch64-linux-android" + rust_host: "aarch64-linux-android" packages: "gperf cmake python3" name: ${{ matrix.toolchain.name }} steps: @@ -95,6 +106,8 @@ jobs: run: ${{env.APT_SET_CONF}} - name: install dependencies run: sudo apt update; sudo apt -y install build-essential libtool cmake autotools-dev automake pkg-config bsdmainutils curl git ca-certificates ccache ${{ matrix.toolchain.packages }} + - name: install rust target + run: rustup update stable; rustup target add ${{ matrix.toolchain.rust_host }} - name: prepare w64-mingw32 if: ${{ matrix.toolchain.host == 'x86_64-w64-mingw32' || matrix.toolchain.host == 'i686-w64-mingw32' }} run: | diff --git a/src/fcmp/fcmp_rust/CMakeLists.txt b/src/fcmp/fcmp_rust/CMakeLists.txt index cb25b3378..ae97858b6 100644 --- a/src/fcmp/fcmp_rust/CMakeLists.txt +++ b/src/fcmp/fcmp_rust/CMakeLists.txt @@ -26,11 +26,55 @@ # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF # THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +if(MINGW) + set(RUST_PLATFORM "pc-windows") + set(RUST_TOOLCHAIN "-gnu") +elseif(MSVC) + set(RUST_PLATFORM "pc-windows") + set(RUST_TOOLCHAIN "-msvc") +elseif(APPLE) + set(RUST_PLATFORM "apple-darwin") + set(RUST_TOOLCHAIN "") +elseif(FREEBSD) + set(RUST_PLATFORM "unknown-freebsd") + set(RUST_TOOLCHAIN "") +elseif(OPENBSD) + set(RUST_PLATFORM "unknown-openbsd") + set(RUST_TOOLCHAIN "") +elseif(ANDROID) + set(RUST_PLATFORM "linux-android") + if(ARCH_ID MATCHES "(arm|armv7)") + set(RUST_TOOLCHAIN "eabi") + else() + set(RUST_TOOLCHAIN "") + endif() +elseif(DRAGONFLY) + set(RUST_PLATFORM "unknown-dragonfly") + set(RUST_TOOLCHAIN "") +elseif(CMAKE_SYSTEM_NAME MATCHES "(SunOS|Solaris)") + if(ARCH_ID MATCHES "x86_64") + set(RUST_PLATFORM "pc-solaris") + set(RUST_TOOLCHAIN "") + elseif(ARCH_ID MATCHES "sparcv9") + set(RUST_PLATFORM "sun-solaris") + set(RUST_TOOLCHAIN "") + endif() +else() + set(RUST_PLATFORM "unknown-linux") + if(ARCH_ID MATCHES "armv7") + set(RUST_TOOLCHAIN "-gnueabi") + else() + set(RUST_TOOLCHAIN "-gnu") + endif() +endif() + +set(RUST_TARGET "${ARCH_ID}-${RUST_PLATFORM}${RUST_TOOLCHAIN}") + if (CMAKE_BUILD_TYPE STREQUAL "Debug") - set(CARGO_CMD cargo build) + set(CARGO_CMD cargo build --target "${RUST_TARGET}") set(TARGET_DIR "debug") else () - set(CARGO_CMD cargo build --release) + set(CARGO_CMD cargo build --target "${RUST_TARGET}" --release) set(TARGET_DIR "release") endif ()