4 echo "# Generated file; do not edit!\n";
8 "Linux" => "ubuntu-22.04",
9 "Windows" => "windows-2019",
10 "macOS" => "macos-10.15",
11 "ubuntu-22.04" => "gnu",
12 "windows-2019" => "msvc",
13 "macos-10.15" => "clang",
94 "CXXFLAGS" => "-stdlib=libc++",
95 "INSTALL_CXX" => "libc++-14-dev libc++abi-14-dev"
98 "CXXFLAGS" => "-stdlib=libc++",
99 "INSTALL_CXX" => "libc++-13-dev libc++abi-13-dev"
102 "CXXFLAGS" => "-stdlib=libc++",
103 "INSTALL_CXX" => "libc++-12-dev libc++abi-12-dev"
110 "CXXFLAGS" => "-stdlib=libc++",
111 "INSTALL_CXX" => "libc++-12-dev libc++abi-12-dev"
114 "CXXFLAGS" => "-stdlib=libc++",
115 "INSTALL_CXX" => "libc++-11-dev libc++abi-11-dev"
118 "CXXFLAGS" => "-stdlib=libc++",
119 "INSTALL_CXX" => "libc++-10-dev libc++abi-10-dev"
126 "CXXFLAGS" => "-stdlib=libc++"
129 "CXXFLAGS" => "-stdlib=libc++"
132 "CXXFLAGS" => "-stdlib=libc++"
139 * @var bool $splat_map false = no splat map, null = default splat map, true = full splat map
141 function steps_setenv($os_vnd, $splat_map = null) {
142 if ($os_vnd === "Windows") {
144 - name
: Prepare
environment (Windows
)
146 echo "c:\msys64\usr\bin" | Out
-File
-FilePath
$env:GITHUB_PATH
-Encoding utf8
-Append
147 echo "c:\msys64\mingw64\bin" | Out
-File
-FilePath
$env:GITHUB_PATH
-Encoding utf8
-Append
148 echo 'CMAKE_GENERATOR=Visual Studio 16 2019' | Out
-File
-FilePath
$env:GITHUB_ENV
-Encoding utf8
-Append
149 - name
: Prepare
environment (MinGW
)
150 if: env
.CC_VND
== 'mingw'
152 echo 'CMAKE_GENERATOR=MinGW Makefiles' | Out
-File
-FilePath
$env:GITHUB_ENV
-Encoding utf8
-Append
154 } elseif ($splat_map !== false) {
155 foreach (MAP
as $os_is => $os_vers) {
156 foreach ($os_vers as $os_ver => $cc_vnds_) {
157 if (!$splat_map && DEF
[DEF
["os"]] != $os_ver) continue;
158 foreach ($cc_vnds_ as $cc_vnd_is => $cc_vnds) {
159 foreach ($cc_vnds as $cc_vnd => $cc_vers_) {
160 if (!$splat_map && DEF
[DEF
[DEF
["os"]]] != $cc_vnd) continue;
161 foreach ($cc_vers_ as $cc_ver_is => $cc_vers) {
162 foreach ($cc_vers as $cc_ver => $ver) {
163 if (!$splat_map && DEF
[DEF
[DEF
[DEF
["os"]]]]["ver"] != $cc_ver) continue;
165 - name
: Prepare
environment (<?
= "for $cc_ver $cc_vnd on $os_ver" ?
>)
166 if: (<?
="$os_is=='$os_ver') && ($cc_vnd_is=='$cc_vnd') && ($cc_ver_is=='$cc_ver'"?
>)
168 echo CC
="<?=DEF[$cc_vnd]["CC
"] . $ver?>" >> $
{GITHUB_ENV
}
169 echo CXX
="<?=DEF[$cc_vnd]["CXX
"] . $ver?>" >> $
{GITHUB_ENV
}
171 if (isset(ENV
[$os_ver][$cc_vnd][$cc_ver])) {
172 foreach (ENV
[$os_ver][$cc_vnd][$cc_ver] as $env => $val) {
174 echo <?
=$env?
>="<?=$val?>" >> $
{GITHUB_ENV
}
187 function steps_getdeps($os_vnd) {
189 - name
: Install
dependencies (<?
=$os_vnd?
>)
190 if: runner
.os
== '<?=$os_vnd?>'
192 if ($os_vnd === "Linux") :
195 sudo apt
-get update
-y
196 sudo apt
-get install
-my \
201 $
{INSTALL_MEMCACHED
} \
202 $
{INSTALL_CC
} $
{INSTALL_CXX
}
203 sudo systemctl stop memcached ||
true
206 if ($os_vnd === "macOS") :
209 brew install bison flex sphinx
-doc $
{INSTALL_MEMCACHED
}
210 brew services stop memcached ||
true
211 echo MEMCACHED_BINARY
="/usr/local/bin/memcached" >> $
{GITHUB_ENV
}
214 if ($os_vnd === "Windows") :
216 uses
: msys2
/setup
-msys2@v2
225 if ($os_vnd != "Windows") :
227 - name
: Build memcached
228 if: runner
.os
!= 'Windows'
234 ./configure CFLAGS
="-O2 -pipe" \
235 --prefix
=$
{MEMCACHED_PREFIX
} \
239 --disable
-dependency
-tracking \
242 --disable
-option
-checking \
247 echo MEMCACHED_BINARY
="${MEMCACHED_PREFIX}/bin/memcached" >> $
{GITHUB_ENV
}
253 function steps_build() {
255 - name
: Generate build
tree ($
{{ env
.CMAKE_BUILD_TYPE
}})
256 run
: cmake
-DCMAKE_BUILD_TYPE
=$
{{ env
.CMAKE_BUILD_TYPE
}} -S
. -B build
257 - name
: Build all with $
{{ env
.CXX
}} $
{{ env
.CXXFLAGS
}}
258 run
: cmake
--build build
--config $
{{ env
.CMAKE_BUILD_TYPE
}} -j2
262 function steps_test() {
265 if: env
.BUILD_TESTING
== 'ON'
266 run
: cmake
--build build
--config $
{{ env
.CMAKE_BUILD_TYPE
}} -j2
--target test
268 if: env
.BUILD_TESTING
== 'ON'
269 run
: cmake
--install build
--config $
{{ env
.CMAKE_BUILD_TYPE
}} --prefix
/tmp
270 - name
: Failed tests log
271 if: $
{{ env
.BUILD_TESTING
== 'ON' && failure() }}
272 run
: cat build
/Testing
/Temporary
/LastTest
.log ||
true
276 function steps_package() {
280 PUSH_ARTIFACTS_ID
: $
{{ secrets
.PUSH_ARTIFACTS_ID
}}
281 if: env
.PUSH_ARTIFACTS_ID
!= '' && env
.CMAKE_BUILD_TYPE
== 'Release' && !(env
.OS_VER
== 'ubuntu-18.04' && env
.CC_VND
== 'gnu' && env
.CC_VER
== 'new ')
283 cmake
-DCMAKE_BUILD_TYPE
=$
{{ env
.CMAKE_BUILD_TYPE
}} -S
. -B build
284 cmake
--build build
--config $
{{ env
.CMAKE_BUILD_TYPE
}} -j2
--target package
285 cmake
-DCPACK_COMPONENT_INSTALL
=ON build
286 cmake
--build build
--config $
{{ env
.CMAKE_BUILD_TYPE
}} -j2
--target package
287 cmake
--build build
--config $
{{ env
.CMAKE_BUILD_TYPE
}} -j2
--target push
-artifacts
291 function steps_notify($os_vnd) {
293 - name
: Notify Gitter
295 GITTER
: $
{{ secrets
.GITTER
}}
296 if: (success() ||
failure()) && env
.GITTER
!= ''
297 run
: bash
.github
/notify
-gitter
.sh $
{{ job
.status
}}
301 function steps($os_vnd, $splat_map = null) {
302 steps_setenv($os_vnd, $splat_map);
303 steps_getdeps($os_vnd);
307 steps_notify($os_vnd);
310 function defaults($os_vnd = DEF
["os"]) {
311 $os_ver = DEF
[$os_vnd];
312 $cc_vnd = DEF
[$os_ver];
313 $cc_ver = DEF
[$cc_vnd]["ver"];
314 return "$os_ver, $cc_vnd, $cc_ver";
317 function env_override($os_vnd, $cc_vnd = null) {
318 isset($cc_vnd) or $cc_vnd = DEF
[DEF
[$os_vnd]];
320 OS_VND
: <?
=$os_vnd?
> #
321 OS_VER
: <?
=DEF
[$os_vnd]?
> #
322 CC_VND
: <?
=$cc_vnd?
> #
323 CC_VER
: <?
=DEF
[$cc_vnd]["ver"]?
> #
335 - ".github/workflows/cmake-build-ci*"
350 INSTALL_MEMCACHED
: memcached
351 ENABLE_SASL
: "OFF" # ^ almost no memcached distribution package has built in sasl support
352 ENABLE_HASH_HSIEH
: "ON"
354 OS_VND
: <?
=DEF
["os"]?
> #
355 OS_VER
: <?
=DEF
[DEF
["os"]]?
> #
356 CC_VND
: <?
=DEF
[DEF
[DEF
["os"]]]?
> #
357 CC_VER
: <?
=DEF
[DEF
[DEF
[DEF
["os"]]]]["ver"]?
> #
363 name
: dbg
-new (<?
=defaults()?
>)
364 runs
-on
: <?
=DEF
[DEF
["os"]]?
> #
366 CMAKE_BUILD_TYPE
: "Debug"
369 CFLAGS
: "-O0 --coverage"
370 CXXFLAGS
: "-O0 --coverage"
371 INSTALL_MEMCACHED
: ""
372 MEMCACHED_PREFIX
: "/tmp"
375 - uses
: actions
/checkout@v2
376 - uses
: actions
/checkout@v2
378 repository
: memcached
/memcached
381 <?php
steps("Linux"); ?
>
382 - uses
: codecov
/codecov
-action@v1
.0
.13
386 runs
-on
: <?
=DEF
[DEF
["os"]]?
> #
389 sanitizer
: ['address;undefined', 'thread']
391 CMAKE_BUILD_TYPE
: "Debug"
394 ENABLE_SANITIZERS
: $
{{ matrix
.sanitizer
}}
396 - uses
: actions
/checkout@v2
397 <?php
steps("Linux"); ?
>
401 name
: dbg
-mac (<?
=DEF
["macOS"]?
>, <?
=DEF
[DEF
["macOS"]]?
>, <?
=DEF
[DEF
[DEF
["macOS"]]]["ver"]?
>)
402 runs
-on
: <?
=DEF
["macOS"]?
> #
404 CMAKE_BUILD_TYPE
: "Debug"
407 CFLAGS
: "-O0 --coverage"
408 CXXFLAGS
: "-O0 --coverage"
409 <?php
env_override("macOS")?
>
410 continue-on
-error
: true
412 - uses
: actions
/checkout@v2
413 <?php
steps("macOS", false); ?
>
414 - uses
: codecov
/codecov
-action@v1
.0
.13
418 name
: rel
-mac (<?
=DEF
["macOS"]?
>, <?
=DEF
[DEF
["macOS"]]?
>, <?
=DEF
[DEF
[DEF
["macOS"]]]["ver"]?
>)
419 runs
-on
: <?
=DEF
["macOS"]?
> #
421 CMAKE_BUILD_TYPE
: "Release"
422 BUILD_DOCS_MANGZ
: "ON"
423 <?php
env_override("macOS")?
>
424 continue-on
-error
: true
426 - uses
: actions
/checkout@v2
429 <?php
steps("macOS", false); ?
>
431 # windows release builds
436 os_ver
: [<?
=DEF
["Windows"]?
>]
437 cc_vnd
: [msvc
, mingw
]
439 runs
-on
: $
{{ matrix
.os_ver
}}
440 continue-on
-error
: true
442 CMAKE_BUILD_TYPE
: "Release"
444 OS_VER
: $
{{ matrix
.os_ver
}}
445 CC_VND
: $
{{ matrix
.cc_vnd
}}
446 CC_VER
: $
{{ matrix
.cc_ver
}}
448 - uses
: actions
/checkout@v2
451 <?php
steps("Windows", true); ?
>
453 # linux release builds
458 os_ver
: [ubuntu
-20.04, ubuntu
-18.04]
460 cc_ver
: [new, cur
, old
]
461 runs
-on
: $
{{ matrix
.os_ver
}}
462 continue-on
-error
: $
{{ matrix
.cc_vnd
== 'clang' }}
464 CMAKE_BUILD_TYPE
: "Release"
465 BUILD_DOCS_MANGZ
: "ON"
467 OS_VER
: $
{{ matrix
.os_ver
}}
468 CC_VND
: $
{{ matrix
.cc_vnd
}}
469 CC_VER
: $
{{ matrix
.cc_ver
}}
471 - uses
: actions
/checkout@v2
474 <?php
steps("Linux", true); ?
>