Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows build with clang-cl; CI for Windows/ARM64 build #1538

Merged
merged 5 commits into from
May 13, 2024

Commits on May 13, 2024

  1. Fix clanf-cl support

    diff --git a/.github/workflows/windows-alt.yml b/.github/workflows/windows-alt.yml
    index 5d808ad19..e25ef8350 100644
    --- a/.github/workflows/windows-alt.yml
    +++ b/.github/workflows/windows-alt.yml
    @@ -63,12 +63,64 @@ jobs:
               options: |
                 CMAKE_SYSTEM_NAME=Windows \
                 CMAKE_SYSTEM_PROCESSOR=x86_64 \
    -            CMAKE_BUILD_TOOL=ninja.exe \
    +            CMAKE_MAKE_PROGRAM=ninja.exe \
                 CMAKE_BUILD_TYPE=Release \
           - name: Build Project
             run: cmake --build ./build --target all
           - name: Run tests
             run: cmake --build ./build --target run_tests
    +  clang-cl:
    +    if: github.repository_owner == 'aws'
    +    strategy:
    +      fail-fast: false
    +      matrix:
    +        target:
    +          - x64
    +          - x64_arm64
    +    runs-on: windows-latest
    +    steps:
    +      - if: ${{ matrix.target  == 'x64' }}
    +        name: Install NASM
    +        uses: ilammy/[email protected]
    +      - name: Remove wrong clang-cl.exe
    +        run:  rm "C:/Program Files/LLVM/bin/clang-cl.exe"
    +      - name: Checkout
    +        uses: actions/checkout@v4
    +      - uses: TheMrMilchmann/setup-msvc-dev@v3
    +        with:
    +          arch: ${{ matrix.target }}
    +      - if: ${{ matrix.target  == 'x64' }}
    +        name: Setup CMake
    +        uses: threeal/[email protected]
    +        with:
    +          generator: Ninja
    +          c-compiler: clang-cl
    +          cxx-compiler: clang-cl
    +          options: |
    +            CMAKE_CROSSCOMPILING=${{ ((matrix.target  == 'x64') && '0') || '1' }} \
    +            CMAKE_SYSTEM_NAME=Windows \
    +            CMAKE_SYSTEM_PROCESSOR=x86_64 \
    +            CMAKE_BUILD_TYPE=Release \
    +      - if: ${{ matrix.target  == 'x64_arm64' }}
    +        name: Setup CMake
    +        uses: threeal/[email protected]
    +        with:
    +          generator: Ninja
    +          c-compiler: clang-cl
    +          cxx-compiler: clang-cl
    +          options: |
    +            CMAKE_CROSSCOMPILING=1 \
    +            CMAKE_SYSTEM_NAME=Windows \
    +            CMAKE_SYSTEM_PROCESSOR=ARM64 \
    +            CMAKE_C_COMPILER_TARGET=arm64-pc-windows-msvc \
    +            CMAKE_ASM_COMPILER_TARGET=arm64-pc-windows-msvc \
    +            CMAKE_CXX_COMPILER_TARGET=arm64-pc-windows-msvc \
    +            CMAKE_BUILD_TYPE=Release \
    +      - name: Build Project
    +        run: cmake --build ./build --target all
    +      - if: ${{ matrix.target  == 'x64' }}
    +        name: Run tests
    +        run: cmake --build ./build --target run_tests
       cross-mingw:
         if: github.repository_owner == 'aws'
         runs-on: ubuntu-22.04
    @@ -95,4 +147,3 @@ jobs:
           - name: x86_64-w64-mingw32 Build/Test
             run:
               ./tests/ci/run_cross_mingw_tests.sh x86_64 w64-mingw32 "-DCMAKE_BUILD_TYPE=Release"
    -
    diff --git a/CMakeLists.txt b/CMakeLists.txt
    index 3089697c7..8dace468f 100644
    --- a/CMakeLists.txt
    +++ b/CMakeLists.txt
    @@ -347,7 +347,15 @@ if(GCC OR CLANG)
       # TODO(CryptoAlg-759): enable '-Wpedantic' if awslc has to follow c99 spec.
       if(CLANG OR (GCC AND CMAKE_C_COMPILER_VERSION VERSION_GREATER "4.1.3"))
         # GCC 4.1.3 and below do not support all of these flags or they raise false positives.
    -    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden -Wall -Wextra -Wno-unused-parameter -Werror")
    +    if (MSVC)
    +      # clang-cl sets different default warnings than clang. It also treats -Wall
    +      # as -Weverything, to match MSVC. Instead -W3 is the alias for -Wall.
    +      # See http://llvm.org/viewvc/llvm-project?view=revision&revision=319116
    +      set(C_CXX_FLAGS "${C_CXX_FLAGS} -W3 -Wno-unused-parameter -fmsc-version=1900 -Werror")
    +      set(C_CXX_FLAGS "${C_CXX_FLAGS} -Wno-deprecated-declarations")
    +    else()
    +      set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden -Wall -Wextra -Wno-unused-parameter -Werror")
    +    endif()
         set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wunused -Wcomment -Wchar-subscripts -Wuninitialized -Wshadow")
         set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wwrite-strings -Wformat-security -Wunused-result")
         set(C_CXX_FLAGS "${C_CXX_FLAGS} -Wvla -Wtype-limits")
    @@ -359,12 +367,7 @@ if(GCC OR CLANG)
       endif()
    
       set(C_CXX_FLAGS "${C_CXX_FLAGS} -Werror -Wformat=2 -Wsign-compare -Wmissing-field-initializers -Wwrite-strings")
    -  if(MSVC)
    -    # clang-cl sets different default warnings than clang. It also treats -Wall
    -    # as -Weverything, to match MSVC. Instead -W3 is the alias for -Wall.
    -    # See http://llvm.org/viewvc/llvm-project?view=revision&revision=319116
    -    set(C_CXX_FLAGS "${C_CXX_FLAGS} -W3 -Wno-unused-parameter -fmsc-version=1900")
    -  else()
    +  if(!MSVC)
         if(EMSCRIPTEN)
           # emscripten's emcc/clang does not accept the "-ggdb" flag.
           set(C_CXX_FLAGS "${C_CXX_FLAGS} -g")
    justsmth committed May 13, 2024
    Configuration menu
    Copy the full SHA
    2fa517d View commit details
    Browse the repository at this point in the history
  2. Fix MSVC debug

    justsmth committed May 13, 2024
    Configuration menu
    Copy the full SHA
    f08b485 View commit details
    Browse the repository at this point in the history
  3. Fix CFI build

    justsmth committed May 13, 2024
    Configuration menu
    Copy the full SHA
    5ed0b29 View commit details
    Browse the repository at this point in the history
  4. Cleanup more redundant flags

    justsmth committed May 13, 2024
    Configuration menu
    Copy the full SHA
    b02504b View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    c5cfba5 View commit details
    Browse the repository at this point in the history