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/scripts/build_awslc.cmake b/scripts/build_awslc.cmake new file mode 100644 index 00000000..bb659573 --- /dev/null +++ b/scripts/build_awslc.cmake @@ -0,0 +1,27 @@ +# 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++) + +# ------------ +# where is the target environment located +set(CMAKE_FIND_ROOT_PATH /usr/aarch64-linux-gnu) +set(CMAKE_SYSROOT /usr/aarch64-linux-gnu) + +# adjust the default behavior of the FIND_XXX() commands: +# search programs in the host environment +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +# search headers and libraries in the target environment +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) +# ------------ \ No newline at end of file diff --git a/scripts/build_awslc.sh b/scripts/build_awslc.sh index bddcb1b1..76138d18 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,33 @@ set -o xtrace # Remember where LNSym is LNSym_DIR=${PWD} +MICRO_ARCH="neoverse-n1" +TARGET="aarch64-unknown-linux-gnu" +export LDFLAGS="-fuse-ld=lld" + +find / | grep "Scrt1.o" + # Install dependencies -brew install ninja golang +sudo apt-get update +sudo apt-get install -y cmake clang ninja-build -# 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 ../ -ninja +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-build # Move crypto_test to LNSym cp -f crypto/crypto_test ${LNSym_DIR}/Tests/ELFParser/Data/crypto_test - -cd ${LNSym_DIR}