Skip to content

Commit

Permalink
Merge branch 'main' into task/no-undervotes
Browse files Browse the repository at this point in the history
  • Loading branch information
john-s-morgan committed Aug 8, 2023
2 parents b4ab13a + 22923ec commit 85d00e0
Show file tree
Hide file tree
Showing 183 changed files with 7,722 additions and 59,900 deletions.
35 changes: 27 additions & 8 deletions .github/workflows/pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,8 @@ jobs:
"macos-13-xcode-14.2",
"macos-13-xcode-14.2-arm64",
"windows-2022-gcc-11",
"windows-2022-msvc-latest",
"windows-2022-msvc-latest-x86",
"windows-2022-msvc-latest-x64",
"ubuntu-22.04-linter",
]
include:
Expand Down Expand Up @@ -129,7 +130,16 @@ jobs:
lint: false
runCsTests: false
runTsTests: false
- name: windows-2022-msvc-latest
- name: windows-2022-msvc-latest-x86
os: windows-2022
processor: x86
compiler: msvc
version: "latest"
makeReleaseBuild: false
lint: false
runCsTests: false
runTsTests: false
- name: windows-2022-msvc-latest-x64
os: windows-2022
processor: x64
compiler: msvc
Expand Down Expand Up @@ -240,11 +250,20 @@ jobs:
sudo xcode-select -switch /Applications/Xcode_${{ matrix.version }}.app
- name: Update Environment (Windows MSYS2)
if: (runner.os == 'Windows' && matrix.compiler == 'gcc' && steps.filter.outputs.any == 'true')
if: (runner.os == 'Windows' && matrix.compiler == 'clang' && steps.filter.outputs.any == 'true')
uses: msys2/setup-msys2@v2
with:
update: true
install: mingw-w64-x86_64-gcc
msystem: clang64
install: >-
base-devel
mingw-w64-clang-x86_64-gcc
mingw-w64-clang-x86_64-toolchain
mingw-w64-clang-x86_64-clang-14
mingw-w64-clang-x86_64-cmake
mingw-w64-clang-x86_64-llvm-14
make
git
- name: Update Environment (Windows MSVC x64)
if: (runner.os == 'Windows' && matrix.compiler == 'msvc' && matrix.processor == 'x64' && steps.filter.outputs.any == 'true')
Expand All @@ -256,7 +275,7 @@ jobs:
if: (runner.os == 'Windows' && matrix.compiler == 'msvc' && matrix.processor == 'x86' && steps.filter.outputs.any == 'true')
uses: ilammy/msvc-dev-cmd@v1
with:
arch: amd64_x86
arch: ${{ matrix.processor }}

# Tools
- name: Install .NET
Expand Down Expand Up @@ -301,11 +320,11 @@ jobs:
if: (runner.os == 'Windows' && matrix.compiler == 'msvc' && steps.filter.outputs.cpp == 'true')
run: make test

- name: Run Tests (Windows-msys2)
- name: Run Tests (Windows-x86)
env:
PROCESSOR: ${{ matrix.processor }}
if: (runner.os == 'Windows' && matrix.compiler == 'gcc' && steps.filter.outputs.cpp == 'true')
run: make test-msys2
if: (runner.os == 'Windows' && matrix.compiler == 'msvc' && matrix.processor == 'x86' && steps.filter.outputs.cpp == 'true')
run: make test-x86

- name: Run .Net Tests
env:
Expand Down
33 changes: 32 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,31 @@ jobs:
build/libs/wasm/Release/src/electionguard/wasm/*.js
build/libs/wasm/Release/src/electionguard/wasm/*.wasm
# TODO: win x86
windows_build_x86:
name: Windows Build (x86)
runs-on: windows-2022
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Install .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: 7.0.x
- name: Setup Environment
run: make environment
- name: Build
run: make build-x86
- name: Upload Library (x86)
uses: actions/upload-artifact@v3
with:
name: win-x86
path: |
build/libs/Windows/x86/Release/src/Release/*.dll
build/libs/Windows/x86/Release/src/Release/*.exp
build/libs/Windows/x86/Release/src/Release/*.lib
build/libs/Windows/x86/Release/libs/hacl/Release/*.dll
build/libs/Windows/x86/Release/libs/hacl/Release/*.exp
build/libs/Windows/x86/Release/libs/hacl/Release/*.lib
windows_build_x64:
name: Windows Build (x64)
Expand Down Expand Up @@ -190,6 +214,7 @@ jobs:
macos_build_arm64,
macos_build_x64,
windows_build_x64,
windows_build_x86,
]
runs-on: ubuntu-22.04
steps:
Expand Down Expand Up @@ -222,6 +247,12 @@ jobs:
name: osx-x64
path: build/libs/Darwin/x64/Release

- name: Get Windows x86 Artifacts
uses: actions/download-artifact@v3
with:
name: win-x86
path: build/libs/Windows/x86/Release

- name: Get Windows x64 Artifacts
uses: actions/download-artifact@v3
with:
Expand Down
1 change: 1 addition & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
"omnisharp.enableRoslynAnalyzers": true,
"omnisharp.enableEditorConfigSupport": true,
"files.associations": {
".env": "properties",
"hacl_hmac_drbg.h": "c",
"array": "cpp",
"atomic": "cpp",
Expand Down
102 changes: 75 additions & 27 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -135,10 +135,24 @@ ifeq ($(OPERATING_SYSTEM),Windows)
choco upgrade ninja -y
choco upgrade vswhere -y
endif
wget -O cmake/CPM.cmake https://github.com/cpm-cmake/CPM.cmake/releases/download/v0.35.5/CPM.cmake
wget -O cmake/CPM.cmake https://github.com/cpm-cmake/CPM.cmake/releases/download/v0.38.2/CPM.cmake
make fetch-sample-data
dotnet tool restore

environment-msys2:
ifeq ($(OPERATING_SYSTEM),Windows)
@echo 🏁 MSYS2 INSTALL
pacman -S --noconfirm --needed --overwrite \
base-devel \
mingw-w64-x86_64-gcc \
mingw-w64-clang-x86_64-clang \
mingw-w64-clang-x86_64-toolchain \
mingw-w64-clang-x86_64-cmake \
mingw-w64-clang-x86_64-llvm \
make \
git
endif

environment-ui:
ifeq ($(OPERATING_SYSTEM),Windows)
dotnet workload install maui
Expand All @@ -159,16 +173,16 @@ else
endif

# Builds

build:
@echo 🧱 BUILD $(OPERATING_SYSTEM) $(PROCESSOR) $(TARGET)
@echo 🧱 BUILD $(OPERATING_SYSTEM) $(PROCESSOR) $(TARGET) $(VSPLATFORM)
ifeq ($(OPERATING_SYSTEM),Windows)
cmake -S . -B $(ELECTIONGUARD_BUILD_LIBS_DIR)/$(OPERATING_SYSTEM)/$(PROCESSOR)/$(TARGET) \
-G "Visual Studio 17 2022" -A $(VSPLATFORM) \
-DCMAKE_BUILD_TYPE=$(TARGET) \
-DBUILD_SHARED_LIBS=ON \
-DDISABLE_VALE=$(TEMP_DISABLE_VALE) \
-DUSE_MSVC=ON \
-DUSE_32BIT_MATH=$(USE_32BIT_MATH) \
-DANDROID_NDK_PATH=$(ANDROID_NDK_PATH) \
-DCPM_SOURCE_CACHE=$(CPM_SOURCE_CACHE) \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/$(PROCESSOR)-$(OPERATING_SYSTEM).cmake
Expand All @@ -186,23 +200,23 @@ endif

build-arm64:
ifeq ($(OPERATING_SYSTEM),Windows)
set "PROCESSOR=arm64" & make build
PROCESSOR=arm64 && make build
else
PROCESSOR=arm64 && make build
endif

build-x86:
build-x64:
ifeq ($(OPERATING_SYSTEM),Windows)
set "PROCESSOR=x86" & set "VSPLATFORM=Win32" & make build
PROCESSOR=x64 && make build
else
PROCESSOR=x86 VSPLATFORM=Win32 && make build
PROCESSOR=x64 && make build
endif

build-x64:
build-x86:
ifeq ($(OPERATING_SYSTEM),Windows)
set "PROCESSOR=x64" & make build
PROCESSOR=x86 VSPLATFORM=Win32 USE_32BIT_MATH=ON && make build
else
PROCESSOR=x64 && make build
PROCESSOR=x86 VSPLATFORM=Win32 USE_32BIT_MATH=ON && make build
endif

build-msys2:
Expand All @@ -211,18 +225,26 @@ ifeq ($(OPERATING_SYSTEM),Windows)
cmake -S . -B $(ELECTIONGUARD_BUILD_LIBS_DIR)/$(OPERATING_SYSTEM)/$(PROCESSOR)/$(TARGET) -G "MSYS Makefiles" \
-DCMAKE_BUILD_TYPE=$(TARGET) \
-DBUILD_SHARED_LIBS=ON \
-DCAN_USE_VECTOR_INTRINSICS=ON \
-DDISABLE_VALE=$(TEMP_DISABLE_VALE) \
-DUSE_32BIT_MATH=$(USE_32BIT_MATH) \
-DCPM_SOURCE_CACHE=$(CPM_SOURCE_CACHE) \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/$(PROCESSOR)-$(OPERATING_SYSTEM)-msys2.cmake
cmake --build $(ELECTIONGUARD_BUILD_LIBS_DIR)/$(OPERATING_SYSTEM)/$(PROCESSOR)/$(TARGET)
else
echo "MSYS2 builds are only supported on Windows"
endif

build-msys2-x86:
ifeq ($(OPERATING_SYSTEM),Windows)
PROCESSOR=x86 USE_32BIT_MATH=ON && make build-msys2
else
echo "MSYS2 builds are only supported on Windows"
endif

build-android:
@echo 📱 BUILD ANDROID
ifeq ($(OPERATING_SYSTEM),Windows)
set "PROCESSOR=arm64" & set "OPERATING_SYSTEM=Android" & make build
PROCESSOR=arm64 OPERATING_SYSTEM=Android && make build
else
PROCESSOR=arm64 OPERATING_SYSTEM=Android && make build
endif
Expand Down Expand Up @@ -259,11 +281,16 @@ build-netstandard: build

build-netstandard-x64:
ifeq ($(OPERATING_SYSTEM),Windows)
set "PROCESSOR=x64" & make build-netstandard
PROCESSOR=x64 && make build-netstandard
else
PROCESSOR=x64 && make build-netstandard
endif

build-netstandard-x86:
ifeq ($(OPERATING_SYSTEM),Windows)
PROCESSOR=x86 VSPLATFORM=Win32 USE_32BIT_MATH=ON && make build-netstandard
endif

build-cli:
@echo 🖥️ BUILD CLI $(OPERATING_SYSTEM) $(PROCESSOR) $(TARGET)
cd ./apps/electionguard-cli && dotnet restore
Expand Down Expand Up @@ -518,63 +545,84 @@ endif
# Test

test:
@echo 🧪 TEST $(OPERATING_SYSTEM) $(PROCESSOR) $(TARGET)
@echo 🧪 TEST $(OPERATING_SYSTEM) $(PROCESSOR) $(TARGET) $(VSPLATFORM)
ifeq ($(OPERATING_SYSTEM),Windows)
cmake -S . -B $(ELECTIONGUARD_BUILD_LIBS_DIR)/$(OPERATING_SYSTEM)/$(PROCESSOR)/$(TARGET) \
-G "Visual Studio 17 2022" -A $(VSPLATFORM) \
-DCMAKE_BUILD_TYPE=$(TARGET) \
-DBUILD_SHARED_LIBS=ON \
-DEXPORT_INTERNALS=ON \
-DUSE_TEST_PRIMES=OFF \
-DDISABLE_VALE=$(TEMP_DISABLE_VALE) \
-DUSE_MSVC=ON \
-DUSE_32BIT_MATH=$(USE_32BIT_MATH) \
-DOPTION_ENABLE_TESTS=ON \
-DLOG_LEVEL=debug \
-DCPM_SOURCE_CACHE=$(CPM_SOURCE_CACHE) \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/test.cmake
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/$(PROCESSOR)-$(OPERATING_SYSTEM).cmake
cmake --build $(ELECTIONGUARD_BUILD_LIBS_DIR)/$(OPERATING_SYSTEM)/$(PROCESSOR)/$(TARGET)/ --config $(TARGET)
$(ELECTIONGUARD_BUILD_LIBS_DIR)/$(OPERATING_SYSTEM)/$(PROCESSOR)/$(TARGET)/test/$(TARGET)/ElectionGuardTests
$(ELECTIONGUARD_BUILD_LIBS_DIR)/$(OPERATING_SYSTEM)/$(PROCESSOR)/$(TARGET)/test/$(TARGET)/ElectionGuardCTests
else
cmake -S . -B $(ELECTIONGUARD_BUILD_LIBS_DIR)/$(PROCESSOR)/$(TARGET) \
-DCMAKE_BUILD_TYPE=$(TARGET) \
-DCPM_SOURCE_CACHE=$(CPM_SOURCE_CACHE) \
-DBUILD_SHARED_LIBS=ON \
-DEXPORT_INTERNALS=ON \
-DUSE_TEST_PRIMES=OFF \
-DDISABLE_VALE=$(TEMP_DISABLE_VALE) \
-DUSE_32BIT_MATH=$(USE_32BIT_MATH) \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/test.cmake
-DOPTION_ENABLE_TESTS=ON \
-DLOG_LEVEL=debug \
-DCPM_SOURCE_CACHE=$(CPM_SOURCE_CACHE) \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/$(PROCESSOR)-$(OPERATING_SYSTEM).cmake
cmake --build $(ELECTIONGUARD_BUILD_LIBS_DIR)/$(PROCESSOR)/$(TARGET)
$(ELECTIONGUARD_BUILD_LIBS_DIR)/$(PROCESSOR)/$(TARGET)/test/ElectionGuardTests
$(ELECTIONGUARD_BUILD_LIBS_DIR)/$(PROCESSOR)/$(TARGET)/test/ElectionGuardCTests
endif

test-arm64:
ifeq ($(OPERATING_SYSTEM),Windows)
set "PROCESSOR=arm64" & make test
PROCESSOR=arm64 && make test
else
PROCESSOR=arm64 && make test
endif

test-x64:
ifeq ($(OPERATING_SYSTEM),Windows)
set "PROCESSOR=x64" & make test
PROCESSOR=x64 && make test
else
PROCESSOR=x64 && make test
endif

test-x86:
ifeq ($(OPERATING_SYSTEM),Windows)
set "PROCESSOR=x86" & set "USE_32BIT_MATH=ON" & set "VSPLATFORM=Win32" & make test
else
PROCESSOR=x86 USE_32BIT_MATH=ON VSPLATFORM=Win32 && make test
endif

test-msys2:
@echo 🧪 TEST MSYS2 $(OPERATING_SYSTEM) $(PROCESSOR) $(TARGET)
ifeq ($(OPERATING_SYSTEM),Windows)
cmake -S . -B $(ELECTIONGUARD_BUILD_LIBS_DIR)/$(PROCESSOR)/$(TARGET) -G "MSYS Makefiles" \
-DCMAKE_BUILD_TYPE=$(TARGET) \
-DBUILD_SHARED_LIBS=ON \
-DEXPORT_INTERNALS=ON \
-DUSE_TEST_PRIMES=OFF \
-DDISABLE_VALE=$(TEMP_DISABLE_VALE) \
-DUSE_32BIT_MATH=$(USE_32BIT_MATH) \
-DOPTION_ENABLE_TESTS=ON \
-DLOG_LEVEL=debug \
-DCPM_SOURCE_CACHE=$(CPM_SOURCE_CACHE) \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/test.cmake
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/$(PROCESSOR)-$(OPERATING_SYSTEM)-msys2.cmake
cmake --build $(ELECTIONGUARD_BUILD_LIBS_DIR)/$(PROCESSOR)/$(TARGET)
$(ELECTIONGUARD_BUILD_LIBS_DIR)/$(PROCESSOR)/$(TARGET)/test/ElectionGuardTests
$(ELECTIONGUARD_BUILD_LIBS_DIR)/$(PROCESSOR)/$(TARGET)/test/ElectionGuardCTests
endif

test-msys2-x86:
ifeq ($(OPERATING_SYSTEM),Windows)
PROCESSOR=x86 USE_32BIT_MATH=ON && make test-msys2
else
echo "MSYS2 tests are only supported on Windows"
endif

test-netstandard: build-netstandard
@echo 🧪 TEST NETSTANDARD $(PROCESSOR) $(TARGET)
dotnet test -a $(PROCESSOR) -c $(TARGET) ./bindings/netstandard/ElectionGuard/ElectionGuard.ElectionSetup.Tests/ElectionGuard.ElectionSetup.Tests.csproj
Expand All @@ -583,7 +631,7 @@ test-netstandard: build-netstandard

test-netstandard-arm64:
ifeq ($(OPERATING_SYSTEM),Windows)
set "PROCESSOR=arm64" && make test-netstandard
PROCESSOR=arm64 && make test-netstandard
else
PROCESSOR=arm64 && make test-netstandard
endif
Expand Down Expand Up @@ -651,15 +699,15 @@ ifeq ($(OPERATING_SYSTEM),Windows)
-DCMAKE_BUILD_TYPE=$(TARGET) \
-DCODE_COVERAGE=ON \
-DCPM_SOURCE_CACHE=$(CPM_SOURCE_CACHE) \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/test.cmake
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/$(PROCESSOR)-$(OPERATING_SYSTEM).cmake
else
cmake -S . -B $(ELECTIONGUARD_BUILD_LIBS_DIR)/$(PROCESSOR)/$(TARGET) \
-DCMAKE_BUILD_TYPE=$(TARGET) \
-DCODE_COVERAGE=ON \
-DUSE_STATIC_ANALYSIS=ON \
-DDISABLE_VALE=$(TEMP_DISABLE_VALE) \
-DCPM_SOURCE_CACHE=$(CPM_SOURCE_CACHE) \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/test.cmake
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/$(PROCESSOR)-$(OPERATING_SYSTEM).cmake
endif
cmake --build $(ELECTIONGUARD_BUILD_LIBS_DIR)/$(PROCESSOR)/$(TARGET)
$(ELECTIONGUARD_BUILD_LIBS_DIR)/$(PROCESSOR)/$(TARGET)/test/ElectionGuardTests
Expand Down
Loading

0 comments on commit 85d00e0

Please sign in to comment.