Skip to content

Commit 23bf325

Browse files
committed
Windows builds in GitHub Actions
1 parent 0c6bc9c commit 23bf325

File tree

3 files changed

+60
-35
lines changed

3 files changed

+60
-35
lines changed

.github/workflows/CI.yml

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,25 @@ on: [push, pull_request]
55
jobs:
66
build:
77
name: Build & Test
8-
runs-on: ubuntu-24.04
8+
strategy:
9+
fail-fast: false
10+
matrix:
11+
os: [ubuntu-24.04, windows-2025]
12+
include:
13+
- os: ubuntu-24.04
14+
configure: cmake -DCMAKE_BUILD_TYPE=Debug -Bbuild
15+
artifact_name: unboxing-debug-x86_64-linux
16+
artifacts: build/bch_test build/libtestutils.a build/libunboxing.a build/static_unboxer build/testunboxing build/unboxer
17+
- os: windows-2025
18+
configure: cmake -Bbuild
19+
artifact_name: unboxing-debug-x86_64-win32
20+
artifacts: build/Debug/bch_test.exe build/Debug/bch_test.pdb build/Debug/static_unboxer.exe build/Debug/static_unboxer.pdb build/Debug/testutils.lib build/Debug/testutils.pdb build/Debug/unboxer.exe build/Debug/unboxer.pdb build/Debug/unboxing.lib build/Debug/unboxing.pdb
21+
22+
runs-on: ${{ matrix.os }}
923

1024
steps:
1125
- name: Install dependencies
26+
if: ${{ matrix.os == 'ubuntu-24.04' }}
1227
run: |
1328
sudo apt-get update
1429
sudo apt-get -y install check doxygen
@@ -20,22 +35,17 @@ jobs:
2035
submodules: "recursive"
2136

2237
- name: Configure
23-
run: cmake -DCMAKE_BUILD_TYPE=Debug -Bbuild
38+
run: ${{ matrix.configure }}
2439

2540
- name: Build
2641
run: cmake --build build -j
2742

2843
- name: Upload binaries
2944
uses: actions/upload-artifact@v4
3045
with:
31-
name: unboxing
32-
path: |
33-
build/libtestutils.a
34-
build/libunboxing.a
35-
build/static_unboxer
36-
build/testunboxing
37-
build/unboxer
38-
build/bch_test
46+
name: ${{ matrix.artifact_name }}
47+
path: ${{ matrix.artifacts }}
3948

4049
- name: Test
50+
if: ${{ matrix.os == 'windows-2025' }}
4151
run: ctest -j4 --test-dir build

CMakeLists.txt

Lines changed: 36 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@ cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
22

33
project(unboxing C)
44

5-
set(WARNINGS -Wall -Wextra -Wpedantic -pedantic-errors -Wformat-overflow=2 -Wstrict-overflow=2 -Werror)
5+
if(WIN32)
6+
set(WARNINGS /MP)
7+
else()
8+
set(WARNINGS -Wall -Wextra -Wpedantic -pedantic-errors -Wformat-overflow=2 -Wstrict-overflow=2 -Werror)
9+
endif()
610

711
add_library(unboxing
812
src/base/math_crc32.c
@@ -86,7 +90,9 @@ add_library(unboxing
8690
)
8791
target_compile_options(unboxing PRIVATE ${WARNINGS})
8892
target_include_directories(unboxing PUBLIC inc thirdparty/glib)
89-
target_link_libraries(unboxing m)
93+
if(NOT WIN32)
94+
target_link_libraries(unboxing m)
95+
endif()
9096

9197
set_property(SOURCE src/unboxer.c APPEND PROPERTY INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/src/unboxer)
9298
set_property(SOURCE src/codecs/bchcodec.c APPEND PROPERTY INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/bch)
@@ -124,20 +130,23 @@ if(BUILD_TESTING)
124130
target_compile_options(unboxer PRIVATE ${WARNINGS})
125131
target_link_libraries(unboxer testutils)
126132

127-
128-
add_executable(testunboxing
129-
tests/unboxingdata/configtests.c
130-
tests/unboxingdata/crctests.c
131-
tests/unboxingdata/image8tests.c
132-
tests/unboxingdata/mathtests.c
133-
tests/unboxingdata/matrixtests.c
134-
tests/unboxingdata/metadatatests.c
135-
tests/unboxingdata/stringtests.c
136-
tests/unboxingdata/testsmain.c
137-
)
138-
target_compile_options(testunboxing PRIVATE ${WARNINGS})
139-
target_include_directories(testunboxing PRIVATE tests/testutils/inc)
140-
target_link_libraries(testunboxing unboxing -lcheck -lsubunit)
133+
if(NOT WIN32)
134+
add_executable(testunboxing
135+
tests/unboxingdata/configtests.c
136+
tests/unboxingdata/crctests.c
137+
tests/unboxingdata/image8tests.c
138+
tests/unboxingdata/mathtests.c
139+
tests/unboxingdata/matrixtests.c
140+
tests/unboxingdata/metadatatests.c
141+
tests/unboxingdata/stringtests.c
142+
tests/unboxingdata/testsmain.c
143+
)
144+
target_compile_options(testunboxing PRIVATE ${WARNINGS})
145+
target_include_directories(testunboxing PRIVATE tests/testutils/inc)
146+
target_link_libraries(testunboxing unboxing -lcheck -lsubunit)
147+
add_test(NAME testunboxing COMMAND testunboxing)
148+
set_target_properties(testunboxing PROPERTIES C_EXTENSIONS OFF C_STANDARD 99 C_STANDARD_REQUIRED ON)
149+
endif()
141150

142151
add_executable(bch_test
143152
thirdparty/bch/bch.c
@@ -146,25 +155,27 @@ if(BUILD_TESTING)
146155
target_compile_options(bch_test PRIVATE ${WARNINGS})
147156
target_include_directories(bch_test PRIVATE inc)
148157

149-
set_target_properties(bch_test static_unboxer testunboxing unboxer PROPERTIES
158+
set_target_properties(bch_test static_unboxer unboxer PROPERTIES
150159
C_EXTENSIONS OFF
151160
C_STANDARD 99
152161
C_STANDARD_REQUIRED ON
153162
)
154163

155-
add_test(NAME testunboxing COMMAND testunboxing)
156164
add_test(NAME static_unboxer COMMAND static_unboxer)
157165
add_test(NAME bch_test COMMAND bch_test)
158166
add_test(NAME unboxer_4kv6 COMMAND unboxer -i ../tests/testdata/12288x6878_4kv6.image8 -s 12288 6878 -f 4kv6 -o out-4kv6.dat)
159167
add_test(NAME unboxer_4kv9 COMMAND unboxer -i ../tests/testdata/12288x6879_4kv9.image8 -s 12288 6879 -f 4kv9 -o out-4kv9.dat)
160168
add_test(NAME unboxer_4kv6_analog COMMAND unboxer -i ../tests/testdata/12288x6878_4kv6_analog.image8 -s 12288 6878 -f 4kv6 -o out-4kv6_analog.dat)
161169
add_test(NAME unboxer_4kv6_raw COMMAND unboxer -i ../tests/testdata/4kv6_*d.raw -f 4kv6 -s 4096 2160 -o out_4kv6_raw.dat -is_raw)
162170

163-
add_custom_command(
164-
OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/doc/html/index.html"
165-
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
166-
COMMAND doxygen doxygen.dox
167-
DEPENDS doxygen.dox
168-
)
169-
add_custom_target(doxygen ALL DEPENDS doc/html/index.html)
171+
if(NOT WIN32)
172+
173+
add_custom_command(
174+
OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/doc/html/index.html"
175+
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
176+
COMMAND doxygen doxygen.dox
177+
DEPENDS doxygen.dox
178+
)
179+
add_custom_target(doxygen ALL DEPENDS doc/html/index.html)
180+
endif()
170181
endif()

src/unboxer/adaptive_filter.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@
1212
**
1313
*****************************************************************************/
1414

15+
#ifdef _WIN32
16+
#include <malloc.h>
17+
#else
1518
#include <alloca.h>
19+
#endif
1620

1721
// PROJECT INCLUDES
1822
//

0 commit comments

Comments
 (0)