From d868b81e8012d0a043b748ba118a6df1dace6a68 Mon Sep 17 00:00:00 2001 From: Tony Redondo Date: Wed, 9 Jul 2025 09:52:48 +0200 Subject: [PATCH 01/12] (fix): try to fix the windows build --- build/build-windows.cmd | 11 +++++++---- sdks/rust/test-optimization-sdk/Cargo.toml | 3 +++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/build/build-windows.cmd b/build/build-windows.cmd index adce01f..16a1af6 100644 --- a/build/build-windows.cmd +++ b/build/build-windows.cmd @@ -5,10 +5,13 @@ set GOARCH=amd64 set CC=x:\mingw64\bin\x86_64-w64-mingw32-gcc.exe set CGO_ENABLED=1 set CGO_CPPFLAGS= -set CGO_CXXFLAGS=-O2 -g -set CGO_FFLAGS=-O2 -g -set CGO_CFLAGS=-O2 -Os -DNDEBUG -set CGO_LDFLAGS=-Wl,--gc-sections +#set CGO_CXXFLAGS=-O2 -g +set CGO_CXXFLAGS=-O2 +#set CGO_FFLAGS=-O2 -g +set CGO_FFLAGS=-O2 +#set CGO_CFLAGS=-O2 -Os -DNDEBUG +set CGO_CFLAGS=-O2 -DNDEBUG +#set CGO_LDFLAGS=-Wl,--gc-sections echo Building windows static library go build -tags civisibility_native -buildmode=c-archive -ldflags="-s -w" -o ./output/windows-x64-libtestoptimization-static/testoptimization.lib exports.go main.go diff --git a/sdks/rust/test-optimization-sdk/Cargo.toml b/sdks/rust/test-optimization-sdk/Cargo.toml index 51eb3ed..3d2f111 100644 --- a/sdks/rust/test-optimization-sdk/Cargo.toml +++ b/sdks/rust/test-optimization-sdk/Cargo.toml @@ -14,3 +14,6 @@ zip = { version = "2.5.0", default-features = false, features = ["deflate"] } [target.'cfg(windows)'.build-dependencies] cc = "1.2.3" + +[target.'cfg(windows)'] +crt-static = true From f2b9d0ce2d7fa4cb086418b930e02fb57bab2ff7 Mon Sep 17 00:00:00 2001 From: Tony Redondo Date: Wed, 9 Jul 2025 10:07:02 +0200 Subject: [PATCH 02/12] (fix): try to fix the windows build --- build/build-windows.cmd | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/build/build-windows.cmd b/build/build-windows.cmd index 16a1af6..3e5c4d9 100644 --- a/build/build-windows.cmd +++ b/build/build-windows.cmd @@ -5,16 +5,17 @@ set GOARCH=amd64 set CC=x:\mingw64\bin\x86_64-w64-mingw32-gcc.exe set CGO_ENABLED=1 set CGO_CPPFLAGS= -#set CGO_CXXFLAGS=-O2 -g +rem set CGO_CXXFLAGS=-O2 -g set CGO_CXXFLAGS=-O2 -#set CGO_FFLAGS=-O2 -g +rem set CGO_FFLAGS=-O2 -g set CGO_FFLAGS=-O2 -#set CGO_CFLAGS=-O2 -Os -DNDEBUG -set CGO_CFLAGS=-O2 -DNDEBUG -#set CGO_LDFLAGS=-Wl,--gc-sections +rem set CGO_CFLAGS=-O2 -Os -DNDEBUG +set CGO_CFLAGS=-O2 +rem set CGO_LDFLAGS=-Wl,--gc-sections echo Building windows static library -go build -tags civisibility_native -buildmode=c-archive -ldflags="-s -w" -o ./output/windows-x64-libtestoptimization-static/testoptimization.lib exports.go main.go +rem go build -tags civisibility_native -buildmode=c-archive -ldflags="-s -w" -o ./output/windows-x64-libtestoptimization-static/testoptimization.lib exports.go main.go +go build -tags civisibility_native -buildmode=c-archive -o ./output/windows-x64-libtestoptimization-static/testoptimization.lib exports.go main.go echo Building windows shared library go build -tags civisibility_native -buildmode=c-shared -ldflags="-s -w" -o ./output/windows-x64-libtestoptimization-dynamic/testoptimization.dll exports.go main.go From b75ba01ee155eab309d724158b6a656006bd235a Mon Sep 17 00:00:00 2001 From: Tony Redondo Date: Wed, 9 Jul 2025 10:25:56 +0200 Subject: [PATCH 03/12] fix toolchain --- .github/workflows/rust-sdk-tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/rust-sdk-tests.yml b/.github/workflows/rust-sdk-tests.yml index cbc6e8f..cfdc161 100644 --- a/.github/workflows/rust-sdk-tests.yml +++ b/.github/workflows/rust-sdk-tests.yml @@ -268,10 +268,10 @@ jobs: name: test-artifacts path: ${{ github.workspace }}/build_artifacts - - name: Install rust nightly + - name: Install rust 1.88.0 uses: actions-rust-lang/setup-rust-toolchain@v1 with: - toolchain: nightly + toolchain: 1.88.0 override: true - name: Run tests From 3c5ae8890797af602cc8dca0d05bcc791654d5dc Mon Sep 17 00:00:00 2001 From: Tony Redondo Date: Wed, 9 Jul 2025 10:43:28 +0200 Subject: [PATCH 04/12] changes --- .github/workflows/rust-sdk-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/rust-sdk-tests.yml b/.github/workflows/rust-sdk-tests.yml index cfdc161..cd10f34 100644 --- a/.github/workflows/rust-sdk-tests.yml +++ b/.github/workflows/rust-sdk-tests.yml @@ -242,7 +242,7 @@ jobs: windows-test: name: Run Rust SDK Tests on Windows needs: download-artifacts - runs-on: windows-latest + runs-on: windows-2019 defaults: run: working-directory: sdks/rust/test-optimization-sdk From f73f4715ad6879b4a004186958dca612da28bd5f Mon Sep 17 00:00:00 2001 From: Tony Redondo Date: Wed, 9 Jul 2025 10:55:26 +0200 Subject: [PATCH 05/12] changes --- .github/workflows/rust-sdk-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/rust-sdk-tests.yml b/.github/workflows/rust-sdk-tests.yml index cd10f34..31fc35f 100644 --- a/.github/workflows/rust-sdk-tests.yml +++ b/.github/workflows/rust-sdk-tests.yml @@ -242,7 +242,7 @@ jobs: windows-test: name: Run Rust SDK Tests on Windows needs: download-artifacts - runs-on: windows-2019 + runs-on: windows-2022 defaults: run: working-directory: sdks/rust/test-optimization-sdk From f2cf271e2c822e8f5c838fcefd95a2468b26b6c9 Mon Sep 17 00:00:00 2001 From: Tony Redondo Date: Tue, 15 Jul 2025 13:38:52 +0200 Subject: [PATCH 06/12] changes --- build/build-windows.cmd | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build/build-windows.cmd b/build/build-windows.cmd index 3e5c4d9..78042cf 100644 --- a/build/build-windows.cmd +++ b/build/build-windows.cmd @@ -10,8 +10,9 @@ set CGO_CXXFLAGS=-O2 rem set CGO_FFLAGS=-O2 -g set CGO_FFLAGS=-O2 rem set CGO_CFLAGS=-O2 -Os -DNDEBUG -set CGO_CFLAGS=-O2 +set CGO_CFLAGS=-O2 -fno-unwind-tables -fno-asynchronous-unwind-tables rem set CGO_LDFLAGS=-Wl,--gc-sections +set CGO_LDFLAGS=-Wl,--no-seh echo Building windows static library rem go build -tags civisibility_native -buildmode=c-archive -ldflags="-s -w" -o ./output/windows-x64-libtestoptimization-static/testoptimization.lib exports.go main.go From c642a2e1bc30416b85a6133864548c4c1839cfd2 Mon Sep 17 00:00:00 2001 From: Tony Redondo Date: Tue, 15 Jul 2025 14:04:55 +0200 Subject: [PATCH 07/12] changes --- build/build-windows.cmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/build-windows.cmd b/build/build-windows.cmd index 78042cf..9ec4c0d 100644 --- a/build/build-windows.cmd +++ b/build/build-windows.cmd @@ -16,7 +16,7 @@ set CGO_LDFLAGS=-Wl,--no-seh echo Building windows static library rem go build -tags civisibility_native -buildmode=c-archive -ldflags="-s -w" -o ./output/windows-x64-libtestoptimization-static/testoptimization.lib exports.go main.go -go build -tags civisibility_native -buildmode=c-archive -o ./output/windows-x64-libtestoptimization-static/testoptimization.lib exports.go main.go +go build -tags civisibility_native -buildmode=c-archive -ldflags "-linkmode=external -extldflags=-Wl,--no-seh" -o ./output/windows-x64-libtestoptimization-static/testoptimization.lib exports.go main.go echo Building windows shared library go build -tags civisibility_native -buildmode=c-shared -ldflags="-s -w" -o ./output/windows-x64-libtestoptimization-dynamic/testoptimization.dll exports.go main.go From c2e5db517af47cfadb08f0c3aa2ded605f02d12b Mon Sep 17 00:00:00 2001 From: Tony Redondo Date: Tue, 15 Jul 2025 14:27:34 +0200 Subject: [PATCH 08/12] change --- build/build-windows.cmd | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/build/build-windows.cmd b/build/build-windows.cmd index 9ec4c0d..4b18a05 100644 --- a/build/build-windows.cmd +++ b/build/build-windows.cmd @@ -18,6 +18,20 @@ echo Building windows static library rem go build -tags civisibility_native -buildmode=c-archive -ldflags="-s -w" -o ./output/windows-x64-libtestoptimization-static/testoptimization.lib exports.go main.go go build -tags civisibility_native -buildmode=c-archive -ldflags "-linkmode=external -extldflags=-Wl,--no-seh" -o ./output/windows-x64-libtestoptimization-static/testoptimization.lib exports.go main.go +pushd build_artifacts +set "AR=x:\mingw64\bin\llvm-ar.exe" +set "OBJCOPY=x:\mingw64\bin\llvm-objcopy.exe" + +%AR% x testoptimization.lib +for %%f in (*.o) do ( + echo stripping %%f + %OBJCOPY% --remove-section=.pdata --remove-section=.xdata %%f +) +del testoptimization.lib +%AR% rc testoptimization.lib *.o +%AR% s testoptimization.lib :: (ordena el índice) +popd + echo Building windows shared library go build -tags civisibility_native -buildmode=c-shared -ldflags="-s -w" -o ./output/windows-x64-libtestoptimization-dynamic/testoptimization.dll exports.go main.go From 01d73b6a59f800bf05cc330cda4e946860ab2cf1 Mon Sep 17 00:00:00 2001 From: Tony Redondo Date: Tue, 15 Jul 2025 15:52:35 +0200 Subject: [PATCH 09/12] changes --- build/build-windows.cmd | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/build/build-windows.cmd b/build/build-windows.cmd index 4b18a05..9e5103b 100644 --- a/build/build-windows.cmd +++ b/build/build-windows.cmd @@ -18,7 +18,8 @@ echo Building windows static library rem go build -tags civisibility_native -buildmode=c-archive -ldflags="-s -w" -o ./output/windows-x64-libtestoptimization-static/testoptimization.lib exports.go main.go go build -tags civisibility_native -buildmode=c-archive -ldflags "-linkmode=external -extldflags=-Wl,--no-seh" -o ./output/windows-x64-libtestoptimization-static/testoptimization.lib exports.go main.go -pushd build_artifacts +echo Stripping .pdata and .xdata sections from the static library +pushd ./output/windows-x64-libtestoptimization-static set "AR=x:\mingw64\bin\llvm-ar.exe" set "OBJCOPY=x:\mingw64\bin\llvm-objcopy.exe" @@ -29,7 +30,7 @@ for %%f in (*.o) do ( ) del testoptimization.lib %AR% rc testoptimization.lib *.o -%AR% s testoptimization.lib :: (ordena el índice) +%AR% s testoptimization.lib popd echo Building windows shared library From ba25d75a3d787c7ee67282fe9fc6618473fe3000 Mon Sep 17 00:00:00 2001 From: Tony Redondo Date: Tue, 15 Jul 2025 15:57:24 +0200 Subject: [PATCH 10/12] changes --- .github/workflows/build_libtestoptimization.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_libtestoptimization.yml b/.github/workflows/build_libtestoptimization.yml index 3ccb514..2466750 100644 --- a/.github/workflows/build_libtestoptimization.yml +++ b/.github/workflows/build_libtestoptimization.yml @@ -196,10 +196,10 @@ jobs: run: | $env:CC = "$env:MINGW_PATH\mingw64\bin\gcc.exe" $env:CGO_ENABLED = "1" - $env:CGO_CFLAGS = "-O2 -Os -DNDEBUG" - $env:CGO_LDFLAGS = "-Wl,--gc-sections" + $env:CGO_CFLAGS = "-O2 -Os -DNDEBUG -fno-unwind-tables -fno-asynchronous-unwind-tables" + $env:CGO_LDFLAGS = "-Wl,--no-seh" Write-Host "Building windows static library" - go build -tags civisibility_native -buildmode=c-archive -ldflags="-s -w" -o ./output/windows-x64-libtestoptimization-static/testoptimization.lib exports.go main.go + go build -tags civisibility_native -buildmode=c-archive -o ./output/windows-x64-libtestoptimization-static/testoptimization.lib exports.go main.go Write-Host "Building windows shared library" go build -tags civisibility_native -buildmode=c-shared -ldflags="-s -w" -o ./output/windows-x64-libtestoptimization-dynamic/testoptimization.dll exports.go main.go Write-Host "Compressing DLL with UPX" From 116f6447a6657047475aabaf56ed7ebdbb0fce8b Mon Sep 17 00:00:00 2001 From: Tony Redondo Date: Tue, 15 Jul 2025 16:59:36 +0200 Subject: [PATCH 11/12] changes --- .../workflows/build_libtestoptimization.yml | 49 +++++++++++++++++-- 1 file changed, 45 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build_libtestoptimization.yml b/.github/workflows/build_libtestoptimization.yml index 2466750..500b3ab 100644 --- a/.github/workflows/build_libtestoptimization.yml +++ b/.github/workflows/build_libtestoptimization.yml @@ -194,14 +194,55 @@ jobs: - name: Build Windows libraries shell: pwsh run: | - $env:CC = "$env:MINGW_PATH\mingw64\bin\gcc.exe" + # --------------------------------------------------------------------------- + # Environment variables and compile flags + # --------------------------------------------------------------------------- + $env:CC = "$env:MINGW_PATH\mingw64\bin\gcc.exe" $env:CGO_ENABLED = "1" - $env:CGO_CFLAGS = "-O2 -Os -DNDEBUG -fno-unwind-tables -fno-asynchronous-unwind-tables" + $env:CGO_CFLAGS = "-O2 -fno-unwind-tables -fno-asynchronous-unwind-tables" # prevent new unwind tables $env:CGO_LDFLAGS = "-Wl,--no-seh" - Write-Host "Building windows static library" - go build -tags civisibility_native -buildmode=c-archive -o ./output/windows-x64-libtestoptimization-static/testoptimization.lib exports.go main.go + # --------------------------------------------------------------------------- + # 1. Build the static library (.lib) + # --------------------------------------------------------------------------- + Write-Host "Building Windows static library" + go build ` + -tags civisibility_native ` + -buildmode=c-archive ` + -ldflags "-linkmode=external -extldflags=-Wl,--no-seh" ` + -o ./output/windows-x64-libtestoptimization-static/testoptimization.lib ` + exports.go main.go + # --------------------------------------------------------------------------- + # 2. Strip .pdata/.xdata and re-pack the .lib (fixes MSVC 14.44 linker) + # --------------------------------------------------------------------------- + $libDir = Resolve-Path "./output/windows-x64-libtestoptimization-static" + $libFile = Join-Path $libDir "testoptimization.lib" + $llvmBin = "$env:MINGW_PATH\mingw64\bin" # WinLibs ships llvm-ar / llvm-objcopy + $AR = Join-Path $llvmBin "llvm-ar.exe" + $OBJCOPY = Join-Path $llvmBin "llvm-objcopy.exe" + Write-Host "Removing .pdata/.xdata from $libFile" + Push-Location $libDir + # 2-a) extract all object files + & $AR x testoptimization.lib | Out-Null + # 2-b) strip the problematic sections from each object + Get-ChildItem -Filter *.o | ForEach-Object { + Write-Host " • cleaning $($_.Name)" + & $OBJCOPY --remove-section=.pdata --remove-section=.xdata $_.FullName + } + # 2-c) rebuild the static library + Remove-Item testoptimization.lib + & $AR rc testoptimization.lib *.o | Out-Null + & $AR s testoptimization.lib | Out-Null # rebuild symbol index + # 2-d) delete temporary .o files + Remove-Item *.o + Pop-Location + # --------------------------------------------------------------------------- + # 3. Build the shared library (DLL) – no special handling needed + # --------------------------------------------------------------------------- Write-Host "Building windows shared library" go build -tags civisibility_native -buildmode=c-shared -ldflags="-s -w" -o ./output/windows-x64-libtestoptimization-dynamic/testoptimization.dll exports.go main.go + # --------------------------------------------------------------------------- + # 4. Compress the DLL with UPX + # --------------------------------------------------------------------------- Write-Host "Compressing DLL with UPX" & "$env:UPX_PATH" --best --lzma ./output/windows-x64-libtestoptimization-dynamic/testoptimization.dll working-directory: external/internal/civisibility/native From be70455ed8c6630a6a9943d46b3b4a7127a4e743 Mon Sep 17 00:00:00 2001 From: Tony Redondo Date: Tue, 15 Jul 2025 17:17:54 +0200 Subject: [PATCH 12/12] revert unescessary changes --- .github/workflows/rust-sdk-tests.yml | 5 ++--- build/build-windows.cmd | 5 ----- sdks/rust/test-optimization-sdk/Cargo.toml | 3 --- 3 files changed, 2 insertions(+), 11 deletions(-) diff --git a/.github/workflows/rust-sdk-tests.yml b/.github/workflows/rust-sdk-tests.yml index 31fc35f..b72d951 100644 --- a/.github/workflows/rust-sdk-tests.yml +++ b/.github/workflows/rust-sdk-tests.yml @@ -242,7 +242,7 @@ jobs: windows-test: name: Run Rust SDK Tests on Windows needs: download-artifacts - runs-on: windows-2022 + runs-on: windows-latest defaults: run: working-directory: sdks/rust/test-optimization-sdk @@ -268,10 +268,9 @@ jobs: name: test-artifacts path: ${{ github.workspace }}/build_artifacts - - name: Install rust 1.88.0 + - name: Install rust uses: actions-rust-lang/setup-rust-toolchain@v1 with: - toolchain: 1.88.0 override: true - name: Run tests diff --git a/build/build-windows.cmd b/build/build-windows.cmd index 9e5103b..15f567e 100644 --- a/build/build-windows.cmd +++ b/build/build-windows.cmd @@ -5,17 +5,12 @@ set GOARCH=amd64 set CC=x:\mingw64\bin\x86_64-w64-mingw32-gcc.exe set CGO_ENABLED=1 set CGO_CPPFLAGS= -rem set CGO_CXXFLAGS=-O2 -g set CGO_CXXFLAGS=-O2 -rem set CGO_FFLAGS=-O2 -g set CGO_FFLAGS=-O2 -rem set CGO_CFLAGS=-O2 -Os -DNDEBUG set CGO_CFLAGS=-O2 -fno-unwind-tables -fno-asynchronous-unwind-tables -rem set CGO_LDFLAGS=-Wl,--gc-sections set CGO_LDFLAGS=-Wl,--no-seh echo Building windows static library -rem go build -tags civisibility_native -buildmode=c-archive -ldflags="-s -w" -o ./output/windows-x64-libtestoptimization-static/testoptimization.lib exports.go main.go go build -tags civisibility_native -buildmode=c-archive -ldflags "-linkmode=external -extldflags=-Wl,--no-seh" -o ./output/windows-x64-libtestoptimization-static/testoptimization.lib exports.go main.go echo Stripping .pdata and .xdata sections from the static library diff --git a/sdks/rust/test-optimization-sdk/Cargo.toml b/sdks/rust/test-optimization-sdk/Cargo.toml index 3d2f111..51eb3ed 100644 --- a/sdks/rust/test-optimization-sdk/Cargo.toml +++ b/sdks/rust/test-optimization-sdk/Cargo.toml @@ -14,6 +14,3 @@ zip = { version = "2.5.0", default-features = false, features = ["deflate"] } [target.'cfg(windows)'.build-dependencies] cc = "1.2.3" - -[target.'cfg(windows)'] -crt-static = true