From bb3f8064a2ff8b7f687bc7c15562196c3e37fd52 Mon Sep 17 00:00:00 2001 From: Yan Peng Date: Tue, 20 Aug 2024 21:34:48 +0000 Subject: [PATCH] Cross compile to Aarch64 on Ubuntu --- .github/workflows/makefile.yml | 15 +++++++++++++-- AWSLCELFTests.lean | 8 -------- Makefile | 4 ---- Tests/AWSLCELFTests.lean | 10 ---------- Tests/Tests.lean | 5 +++++ scripts/build_awslc.cmake | 13 +++++++++++++ scripts/build_awslc.sh | 29 ++++++++++++++++++++++------- 7 files changed, 53 insertions(+), 31 deletions(-) delete mode 100644 AWSLCELFTests.lean delete mode 100644 Tests/AWSLCELFTests.lean create mode 100644 scripts/build_awslc.cmake diff --git a/.github/workflows/makefile.yml b/.github/workflows/makefile.yml index fa85af3f..3a0e929a 100644 --- a/.github/workflows/makefile.yml +++ b/.github/workflows/makefile.yml @@ -43,11 +43,22 @@ jobs: path: .lake key: ${{ runner.os }}-lake - - name: Build AWS-LC (MacOS) - if : ${{ runner.os == 'macOS' }} + - name: Setup Go (Ubuntu) + if: ${{ runner.os != 'macOS' }} + uses: actions/setup-go@v4 + with: + go-version: '>=1.18' + + - name: Build AWS-LC (Ubuntu) + if : ${{ runner.os != 'macOS' }} run: | ./scripts/build_awslc.sh + # - name: Run ELFLoader Tests for AWS-LC (MacOS) + # if : ${{ runner.os == 'macOS' }} + # run: | + # make awslc_elftests + - name: Run LNSym Makefile (Ubuntu) if : ${{ runner.os != 'macOS' }} run: | diff --git a/AWSLCELFTests.lean b/AWSLCELFTests.lean deleted file mode 100644 index c82d35ee..00000000 --- a/AWSLCELFTests.lean +++ /dev/null @@ -1,8 +0,0 @@ -/- -Copyright (c) 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. -Released under Apache 2.0 license as described in the file LICENSE. -Author(s): Shilpi Goel --/ --- This module serves as the root of the `Tests` library. --- Import modules here that should be built as part of the library. -import «Tests».AWSLCELFTests diff --git a/Makefile b/Makefile index aea9c300..b312b4bb 100644 --- a/Makefile +++ b/Makefile @@ -27,10 +27,6 @@ proofs: tests: time -p $(LAKE) build Tests -.PHONY: awslc_elftests -awslc_elftests: - time -p $(LAKE) build AWSLCELFTests - .PHONY: cosim cosim: time -p lake exe lnsym $(VERBOSE) --num-tests $(NUM_TESTS) diff --git a/Tests/AWSLCELFTests.lean b/Tests/AWSLCELFTests.lean deleted file mode 100644 index 3fa437b4..00000000 --- a/Tests/AWSLCELFTests.lean +++ /dev/null @@ -1,10 +0,0 @@ -/- -Copyright (c) 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. -Released under Apache 2.0 license as described in the file LICENSE. -Author(s): Yan Peng --/ -import «Tests».«ELFParser».AWSLCCrypto -import «Tests».«ELFParser».AWSLCSHA2 -import «Tests».«ELFParser».AWSLCGCMV8 -import «Tests».«ELFParser».AWSLCAESV8 -import «Tests».«ELFParser».AWSLCAESGCMKernel diff --git a/Tests/Tests.lean b/Tests/Tests.lean index 7eeb81ad..56406632 100644 --- a/Tests/Tests.lean +++ b/Tests/Tests.lean @@ -17,6 +17,11 @@ import «Tests».«AES-GCM».AESV8ProgramTests import «Tests».«AES-GCM».AESV8SpecTests import «Tests».«AES-GCM».AESGCMProgramTests import «Tests».«ELFParser».MiscTests +import «Tests».«ELFParser».AWSLCCrypto +import «Tests».«ELFParser».AWSLCSHA2 +import «Tests».«ELFParser».AWSLCGCMV8 +import «Tests».«ELFParser».AWSLCAESV8 +import «Tests».«ELFParser».AWSLCAESGCMKernel import «Tests».Tactics.CSE import «Tests».Tactics.Sym import «Tests».Tactics.ReduceFetchInst diff --git a/scripts/build_awslc.cmake b/scripts/build_awslc.cmake new file mode 100644 index 00000000..0e1a4b30 --- /dev/null +++ b/scripts/build_awslc.cmake @@ -0,0 +1,13 @@ +# Copyright (c) 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +# Released under Apache 2.0 license as described in the file LICENSE. +# Author(s): Yan Peng + +# https://cmake.org/cmake/help/book/mastering-cmake/chapter/Cross%20Compiling%20With%20CMake.html + +# the name of the target operating system +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR aarch64) + +# which compilers to use for C and C++ +set(CMAKE_C_COMPILER clang) +set(CMAKE_CXX_COMPILER clang++) diff --git a/scripts/build_awslc.sh b/scripts/build_awslc.sh index bddcb1b1..cfa6b2f9 100755 --- a/scripts/build_awslc.sh +++ b/scripts/build_awslc.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # Copyright (c) 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. # Released under Apache 2.0 license as described in the file LICENSE. @@ -10,16 +10,31 @@ set -o xtrace # Remember where LNSym is LNSym_DIR=${PWD} +MICRO_ARCH="neoverse-n1" +TARGET="aarch64-unknown-linux-gnu" +export LDFLAGS="-fuse-ld=lld" + # Install dependencies -brew install ninja golang +sudo apt-get update +sudo apt-get install -y git cmake clang ninja-build lld g++-aarch64-linux-gnu -# Fetching and building AWS-LC +# Fetching AWS-LC git clone https://github.com/aws/aws-lc.git $HOME/aws-lc --depth 1 -cd $HOME/aws-lc; mkdir aws-lc-build; cd aws-lc-build -cmake -GNinja -DKEEP_ASM_LOCAL_SYMBOLS=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo ../ +cd $HOME/aws-lc +# Build AWS-LC +mkdir aws-lc-build; cd aws-lc-build +cmake -GNinja \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DKEEP_ASM_LOCAL_SYMBOLS=1 \ + -DCMAKE_TOOLCHAIN_FILE="${LNSym_DIR}/scripts/build_awslc.cmake" \ + -DCMAKE_C_FLAGS="-mcpu=${MICRO_ARCH}" \ + -DCMAKE_CXX_FLAGS="-mcpu=${MICRO_ARCH}" \ + -DCMAKE_ASM_FLAGS="-mcpu=${MICRO_ARCH}" \ + -DCMAKE_C_COMPILER_TARGET=$TARGET \ + -DCMAKE_CXX_COMPILER_TARGET=$TARGET \ + -DCMAKE_ASM_COMPILER_TARGET=$TARGET \ + ../ ninja # Move crypto_test to LNSym cp -f crypto/crypto_test ${LNSym_DIR}/Tests/ELFParser/Data/crypto_test - -cd ${LNSym_DIR}