-
Notifications
You must be signed in to change notification settings - Fork 158
Expand file tree
/
Copy pathctest-custom.cmake
More file actions
191 lines (154 loc) · 6.79 KB
/
ctest-custom.cmake
File metadata and controls
191 lines (154 loc) · 6.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
set(CTEST_PROJECT_NAME ngscopeclient)
# Identify host system
cmake_host_system_information(RESULT HOSTNAME QUERY HOSTNAME)
message(STATUS "Found hostname: ${HOSTNAME}")
# Get hardware info
include(ProcessorCount)
ProcessorCount(N_PROCS)
message(STATUS "Detected ${N_PROCS} processor cores")
# default git location unless otherwise specified
set(CTEST_GIT_COMMAND "/usr/bin/git")
# default build location unless otherwise specified
set(CTEST_BINARY_DIRECTORY "/home/ci/scopehal-apps/build")
set(CTEST_SOURCE_DIRECTORY "/home/ci/scopehal-apps/")
# default generator unless otherwise specified
set(CTEST_CMAKE_GENERATOR "Unix Makefiles")
# Increase maximum output size for uploading
set(CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE "131072")
set(CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE "131072")
set(CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS 999)
set(CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS 999)
# Ignore this warning generated during static analysis
list(APPEND CTEST_CUSTOM_WARNING_EXCEPTION "linker input file unused because linking not done")
set(STATIC_ANALYSIS 0)
# azonenberg's dev box for testing
if(${HOSTNAME} STREQUAL "havequick" )
set(CTEST_SITE dev-havequick)
set(CTEST_BUILD_NAME x86_64-linux-debian-13-nvidia)
set(CTEST_DASHBOARD Experimental)
message(STATUS "Found known dev config: havequick")
set(CTEST_BINARY_DIRECTORY ".")
set(CTEST_SOURCE_DIRECTORY "..")
# CI Arch
elseif(${HOSTNAME} STREQUAL "arch" )
set(CTEST_SITE ci-arch)
set(CTEST_BUILD_NAME x86_64-linux-arch-nvidia)
set(CTEST_DASHBOARD Continuous)
set(CTEST_GIT_COMMAND "/usr/bin/git")
message(STATUS "Found known CI config: arch")
set(CTEST_BUILD_CONFIGURATION "RelWithDebInfo")
set(CONFIGURE_OPTIONS "-DBUILD_TESTING=ON" "-DBUILD_DOCS=ON" "-DCPACK_GENERATOR=TGZ")
# CI Debian Trixie
elseif(${HOSTNAME} STREQUAL "debian-stable" )
set(CTEST_SITE ci-debian-stable)
set(CTEST_BUILD_NAME x86_64-linux-debian-13-nvidia)
set(CTEST_DASHBOARD Continuous)
set(CTEST_GIT_COMMAND "/usr/bin/git")
message(STATUS "Found known CI config: debian-stable")
set(CTEST_BUILD_CONFIGURATION "RelWithDebInfo")
set(CONFIGURE_OPTIONS "-DBUILD_TESTING=ON" "-DBUILD_DOCS=ON" "-DCPACK_GENERATOR=DEB")
# CI Debian Bookworm
elseif(${HOSTNAME} STREQUAL "debian-oldstable" )
set(CTEST_SITE ci-debian-oldstable)
set(CTEST_BUILD_NAME x86_64-linux-debian-12-nvidia)
set(CTEST_DASHBOARD Continuous)
set(CTEST_GIT_COMMAND "/usr/bin/git")
message(STATUS "Found known CI config: debian-oldstable")
set(CTEST_BUILD_CONFIGURATION "RelWithDebInfo")
set(CONFIGURE_OPTIONS "-DBUILD_TESTING=ON" "-DBUILD_DOCS=ON" "-DCPACK_GENERATOR=DEB")
# CI Ubuntu Noble
elseif(${HOSTNAME} STREQUAL "ubuntu-oldlts" )
set(CTEST_SITE ci-ubuntu-oldlts)
set(CTEST_BUILD_NAME x86_64-linux-ubuntu-24-04-nvidia)
set(CTEST_DASHBOARD Continuous)
set(CTEST_GIT_COMMAND "/usr/bin/git")
message(STATUS "Found known CI config: ubuntu-oldlts")
set(CTEST_BUILD_CONFIGURATION "RelWithDebInfo")
set(CONFIGURE_OPTIONS "-DBUILD_TESTING=ON" "-DBUILD_DOCS=ON" "-DCPACK_GENERATOR=DEB")
# CI Ubuntu Resolute
elseif(${HOSTNAME} MATCHES "ubuntu-lts" )
set(CTEST_SITE ci-ubuntu-lts)
set(CTEST_DASHBOARD Continuous)
set(CTEST_GIT_COMMAND "/usr/bin/git")
message(STATUS "Found known CI config: ubuntu-lts")
if($ENV{SANITIZE})
set(CTEST_BUILD_NAME x86_64-linux-ubuntu-26-04-llvmpipe-asan)
message(STATUS "Building debug version with sanitizers")
set(CTEST_BUILD_CONFIGURATION "DebugNoOpt")
set(CONFIGURE_OPTIONS "-DBUILD_TESTING=ON" "-DSANITIZE=ON")
elseif($ENV{ANALYZE})
set(CTEST_BUILD_NAME x86_64-linux-ubuntu-26-04-llvmpipe-analysis)
message(STATUS "Building for static analysis")
set(STATIC_ANALYSIS 1)
# scan-build exclude doesn't seem to work under cmake so just filter out the warnings in the library files
list(APPEND CTEST_CUSTOM_WARNING_EXCEPTION "src/imgui/")
list(APPEND CTEST_CUSTOM_WARNING_EXCEPTION "src/imgui-node-editor/")
list(APPEND CTEST_CUSTOM_WARNING_EXCEPTION "src/ImGuiFileDialog/")
list(APPEND CTEST_CUSTOM_WARNING_EXCEPTION "src/nativefiledialog-extended/")
set(CTEST_BUILD_CONFIGURATION "DebugNoOpt")
set(CONFIGURE_OPTIONS "-DBUILD_TESTING=ON" "-DANALYZE=ON")
else()
set(CTEST_BUILD_NAME x86_64-linux-ubuntu-26-04-llvmpipe)
message(STATUS "Building optimized release version")
set(CTEST_BUILD_CONFIGURATION "RelWithDebInfo")
# extractbb seems to not be found even though we installed texlive-binaries, so for now turn it off
# to avoid build problems
set(CONFIGURE_OPTIONS "-DBUILD_TESTING=ON" "-DBUILD_DOCS=OFF" "-DCPACK_GENERATOR=DEB")
endif()
# CI Fedora 43
elseif(${HOSTNAME} STREQUAL "fedora" )
set(CTEST_SITE ci-fedora)
set(CTEST_BUILD_NAME x86_64-linux-fedora-43-llvmpipe)
set(CTEST_DASHBOARD Continuous)
set(CTEST_GIT_COMMAND "/usr/bin/git")
message(STATUS "Found known CI config: fedora")
# texlive is crashing with a buffer overflow so for now turn doc build off
set(CTEST_BUILD_CONFIGURATION "RelWithDebInfo")
set(CONFIGURE_OPTIONS "-DBUILD_TESTING=ON" "-DBUILD_DOCS=OFF" "-DCPACK_GENERATOR=RPM")
# CI Windows 11
elseif(${HOSTNAME} STREQUAL "win11" )
set(CTEST_SITE ci-win11)
set(CTEST_BUILD_NAME x86_64-windows-11-nvidia)
set(CTEST_DASHBOARD Continuous)
set(CTEST_GIT_COMMAND "c:\\msys64\\usr\\bin\\git.exe")
set(CTEST_BINARY_DIRECTORY "c:\\Users\\ci\\scopehal-apps\\build")
set(CTEST_SOURCE_DIRECTORY "c:\\Users\\ci\\scopehal-apps")
set(CTEST_CMAKE_GENERATOR "Ninja")
message(STATUS "Found known CI config: win11")
set(CTEST_BUILD_CONFIGURATION "RelWithDebInfo")
set(CONFIGURE_OPTIONS "-DBUILD_TESTING=ON" "-DWIXPATH=C:\\PROGRA~2\\WIXTOO~1.14\\bin" "-DCPACK_GENERATOR=WIX") # don't build docs on windows for now, TODO figure that out
# CI MacOS ARM64, for whatever reason it reports the FQDN not just the hostname
elseif(${HOSTNAME} STREQUAL "macos.cidmz.poulsbo.antikernel.net" )
set(CTEST_SITE ci-macos)
set(CTEST_BUILD_NAME aarch64-macos-15-6-moltenvk)
set(CTEST_DASHBOARD Continuous)
set(CTEST_CMAKE_GENERATOR "Ninja")
set(CTEST_BINARY_DIRECTORY "/Users/ci/Documents/scopehal-apps/build")
set(CTEST_SOURCE_DIRECTORY "/Users/ci/Documents/scopehal-apps/")
message(STATUS "Found known CI config: macos")
set(CTEST_BUILD_CONFIGURATION "RelWithDebInfo")
set(CONFIGURE_OPTIONS
"-DDISABLE_PCH=ON"
"-DBUILD_TESTING=ON"
"-DBUILD_DOCS=OFF"
"-DCMAKE_PREFIX_PATH=/opt/homebrew/opt/libomp")
else()
#set(CTEST_SITE ${HOSTNAME})
#set(N_PROCS 4)
message(FATAL_ERROR "No test config matched")
endif()
ctest_start(${CTEST_DASHBOARD})
#report version number but don't do anything else
set(CTEST_UPDATE_VERSION_ONLY 1)
ctest_update()
ctest_configure(OPTIONS "${CONFIGURE_OPTIONS}")
ctest_build(FLAGS "-j${N_PROCS}")
#Don't run unit tests if doing static analysis
if(NOT ${STATIC_ANALYSIS})
ctest_test()
endif()
#ctest_coverage()
set(CTEST_DROP_METHOD https)
set(CTEST_DROP_SITE dashboard.ngscopeclient.org)
set(CTEST_DROP_LOCATION /submit.php?project=ngscopeclient)
ctest_submit()