Skip to content

Commit 945b094

Browse files
committed
Squashed 'src/secp256k1/' changes from 44c2452fd3..bdf39000b9
bdf39000b9 Merge bitcoin-core/secp256k1#1223: release: prepare for 0.3.0 b40adf2360 release: prepare for 0.3.0 90b513aada Merge bitcoin-core/secp256k1#1229: cmake: Rename project to "libsecp256k1" 8be82d4362 cmake: Rename project to "libsecp256k1" ef4f8bd025 Merge bitcoin-core/secp256k1#1227: readme: Use correct build type in CMake/Windows build instructions 756b61d451 readme: Use correct build type in CMake/Windows build instructions 3295aa149b Merge bitcoin-core/secp256k1#1225: changelog: Add entry for CMake 92098d84cf changelog: Add entry for CMake df323b5c14 Merge bitcoin-core/secp256k1#1113: build: Add CMake-based build system e1eb33724c ci: Add "x86_64: Windows (VS 2022)" task 10602b0030 cmake: Export config files 5468d70964 build: Add CMake-based build system 6048e6c03e Merge bitcoin-core/secp256k1#1222: Remove redundant checks. eb8749fcd0 Merge bitcoin-core/secp256k1#1221: Update Changelog 5d8f53e312 Remove redudent checks. 9d1b458d5f Merge bitcoin-core/secp256k1#1217: Add secp256k1_fe_add_int function d232112fa7 Update Changelog 8962fc95bb Merge bitcoin-core/secp256k1#1218: Update overflow check 2ef1c9b387 Update overflow check 5757318782 Merge bitcoin-core/secp256k1#1212: Prevent dead-store elimination when clearing secrets in examples b081f7e4cb Add secp256k1_fe_add_int function 5660c13755 prevent optimization in algorithms 09b1d466db Merge bitcoin-core/secp256k1#979: Native jacobi symbol algorithm ce3cfc78a6 doc: Describe Jacobi calculation in safegcd_implementation.md 6be01036c8 Add secp256k1_fe_is_square_var function 1de2a01c2b Native jacobi symbol algorithm 04c6c1b181 Make secp256k1_modinv64_det_check_pow2 support abs val 5fffb2c7af Make secp256k1_i128_check_pow2 support -(2^n) cbd2555934 Merge bitcoin-core/secp256k1#1209: build: Add SECP256K1_API_VAR to fix importing variables from DLLs 1b21aa5175 Merge bitcoin-core/secp256k1#1078: group: Save a normalize_to_zero in gej_add_ge e4330341bd ci: Shutdown wineserver whenever CI script exits 9a5a611a21 build: Suppress stupid MSVC linker warning 739c53b19a examples: Extend sig examples by call that uses static context 914276e4d2 build: Add SECP256K1_API_VAR to fix importing variables from DLLs 1cca7c1744 Merge bitcoin-core/secp256k1#1206: build: Add -Wreserved-identifier supported by clang 8c7e0fc1de build: Add -Wreserved-identifier supported by clang 8ebe5c5205 Merge bitcoin-core/secp256k1#1201: ci: Do not set git's `user.{email,name}` config options 5596ec5c2c Merge bitcoin-core/secp256k1#1203: Do not link `bench` and `ctime_tests` to `COMMON_LIB` ef39721ccc Do not link `bench` and `ctime_tests` to `COMMON_LIB` 9b60e3148d ci: Do not set git's `user.{email,name}` config options e1817a6f54 Merge bitcoin-core/secp256k1#1199: ci: Minor improvements inspired by Bitcoin Core 1bff200588 Merge bitcoin-core/secp256k1#1200: Drop no longer used Autoheader macros 9b7d18669d Drop no longer used Autoheader macros c2415866c7 ci: Don't fetch git history 0ecf318851 ci: Use remote pull/merge ref instead of local git merge 2b77240b3b Merge bitcoin-core/secp256k1#1172: benchmarks: fix bench_scalar_split eb6bebaee3 scalar: restrict split_lambda args, improve doc and VERIFY_CHECKs 7f49aa7f2d ci: add test job with -DVERIFY 620ba3d74b benchmarks: fix bench_scalar_split 5fbff5d348 Merge bitcoin-core/secp256k1#1170: contexts: Forbid destroying, cloning and randomizing the static context 233822d849 Merge bitcoin-core/secp256k1#1195: ctime_tests: improve output when CHECKMEM_RUNNING is not defined ad7433b140 Merge bitcoin-core/secp256k1#1196: Drop no longer used variables from the build system e39d954f11 tests: Add CHECK_ILLEGAL(_VOID) macros and use in static ctx tests 2cd4e3c0a9 Drop no longer used `SECP_{LIBS,INCLUDE}` variables 613626f94c Drop no longer used `SECP_TEST_{LIBS,INCLUDE}` variables 61841fc9ee contexts: Forbid randomizing secp256k1_context_static 4b6df5e33e contexts: Forbid cloning/destroying secp256k1_context_static b1579cf5fb Merge bitcoin-core/secp256k1#1194: Ensure safety of ctz_debruijn implementation. 8f51229e03 ctime_tests: improve output when CHECKMEM_RUNNING is not defined d6ff738d5b Ensure safety of ctz_debruijn implementation. a01a7d86dc Merge bitcoin-core/secp256k1#1192: Switch to exhaustive groups with small B coefficient a7a7bfaf3d Merge bitcoin-core/secp256k1#1190: Make all non-API functions (except main) static f29a327092 Merge bitcoin-core/secp256k1#1169: Add support for msan instead of valgrind (for memcheck and ctime test) ff8edf89e2 Merge bitcoin-core/secp256k1#1193: Add `noverify_tests` to `.gitignore` ce60785b26 Introduce SECP256K1_B macro for curve b coefficient 4934aa7995 Switch to exhaustive groups with small B coefficient d4a6b58df7 Add `noverify_tests` to `.gitignore` 88e80722d2 Merge bitcoin-core/secp256k1#1160: Makefile: add `-I$(top_srcdir)/{include,src}` to `CPPFLAGS` for precomputed 0f088ec112 Rename CTIMETEST -> CTIMETESTS 74b026f05d Add runtime checking for DECLASSIFY flag 5e2e6fcfc0 Run ctime test in Linux MSan CI job 18974061a3 Make ctime tests building configurable 5048be17e9 Rename valgrind_ctime_test -> ctime_tests 6eed6c18de Update error messages to suggest msan as well 8e11f89a68 Add support for msan integration to checkmem.h 8dc64079eb Add compile-time error to valgrind_ctime_test 0db05a770e Abstract interactions with valgrind behind new checkmem.h 4f1a54e41d Move valgrind CPPFLAGS into SECP_CONFIG_DEFINES cc3b8a4f40 Merge bitcoin-core/secp256k1#1187: refactor: Rename global variables in tests 9a93f48f50 refactor: Rename STTC to STATIC_CTX in tests 3385a2648d refactor: Rename global variables to uppercase in tests e03ef86559 Make all non-API functions (except main) static cbe41ac138 Merge bitcoin-core/secp256k1#1188: tests: Add noverify_tests which is like tests but without VERIFY 203760023c tests: Add noverify_tests which is like tests but without VERIFY e862c4af0c Makefile: add -I$(top_srcdir)/src to CPPFLAGS for precomputed 0eb3000417 Merge bitcoin-core/secp256k1#1186: tests: Tidy context tests 39e8f0e3d7 refactor: Separate run_context_tests into static vs proper contexts a4a09379b1 tests: Clean up and improve run_context_tests() further fc90bb5695 refactor: Tidy up main() f32a36f620 tests: Don't use global context for context tests ce4f936c4f tests: Tidy run_context_tests() by extracting functions 18e0db30cb tests: Don't recreate global context in scratch space test b19806122e tests: Use global copy of secp256k1_context_static instead of clone 2a39ac162e Merge bitcoin-core/secp256k1#1185: Drop `SECP_CONFIG_DEFINES` from examples 2f9ca284e2 Drop `SECP_CONFIG_DEFINES` from examples 31ed5386e8 Merge bitcoin-core/secp256k1#1183: Bugfix: pass SECP_CONFIG_DEFINES to bench compilation c0a555b2ae Bugfix: pass SECP_CONFIG_DEFINES to bench compilation 01b819a8c7 Merge bitcoin-core/secp256k1#1158: Add a secp256k1_i128_to_u64 function. eacad90f69 Merge bitcoin-core/secp256k1#1171: Change ARG_CHECK_NO_RETURN to ARG_CHECK_VOID which returns (void) 3f57b9f774 Merge bitcoin-core/secp256k1#1177: Some improvements to the changelog c30b889f17 Clarify that the ABI-incompatible versions are earlier 881fc33d0c Consistency in naming of modules 665ba77e79 Merge bitcoin-core/secp256k1#1178: Drop `src/libsecp256k1-config.h` 75d7b7f5ba Merge bitcoin-core/secp256k1#1154: ci: set -u in cirrus.sh to treat unset variables as an error 7a74688201 ci: add missing CFLAGS & CPPFLAGS variable to print_environment c2e0fdadeb ci: set -u in cirrus.sh to treat unset variables as an error 9c5a4d21bb Do not define unused `HAVE_VALGRIND` macro ad8647f548 Drop no longer relevant files from `.gitignore` b627ba7050 Remove dependency on `src/libsecp256k1-config.h` 9ecf8149a1 Reduce font size in changelog 2dc133a67f Add more changelog entries ac233e181a Add links to diffs to changelog cee8223ef6 Mention semantic versioning in changelog 9a8d65f07f Merge bitcoin-core/secp256k1#1174: release cleanup: bump version after 0.2.0 02ebc290f7 release cleanup: bump version after 0.2.0 b6b360efaf doc: improve message of cleanup commit 21ffe4b22a Merge bitcoin-core/secp256k1#1055: Prepare initial release e025ccdf74 release: prepare for initial release 0.2.0 6d1784a2e2 build: add missing files to EXTRA_DIST 8c949f56da Merge bitcoin-core/secp256k1#1173: Don't use compute credits for now 13bf1b6b32 changelog: make order of change types match keepachangelog.com b1f992a552 doc: improve release process 7e5b22684f Don't use compute credits for now a49e0940ad docs: Fix typo 2551cdac90 tests: Fix code formatting c635c1bfd5 Change ARG_CHECK_NO_RETURN to ARG_CHECK_VOID which returns (void) cf66f2357c refactor: Add helper function secp256k1_context_is_proper() ad39e2dc41 build: change package version to 0.1.0-dev 5c789dcd73 Merge bitcoin-core/secp256k1#1168: Replace deprecated context flags with NONE in benchmarks and tests d6dc0f4ae3 tests: Switch to NONE contexts in module tests 0c8a5caddd tests: Switch to NONE contexts in tests.c 86540e9e1f tests: add test for deprecated flags and rm them from run_context caa0ad631e group: add gej_eq_var 37ba744f5b tests: Switch to NONE contexts in exhaustive and ctime tests 8d7a9a8eda benchmarks: Switch to NONE contexts 90618e9263 doc: move CHANGELOG from doc/ to root directory e3f84777eb Merge bitcoin-core/secp256k1#1126: API cleanup with respect to contexts 4386a2306c examples: Switch to NONE contexts 7289b51d31 docs: Use doxygen style if and only if comment is user-facing e7d0185c90 docs: Get rid of "initialized for signing" terminology 06126364ad docs: Tidy and improve docs about contexts and randomization e02d6862bd selftest: Expose in public API e383fbfa66 selftest: Rename internal function to make name available for API d2c6d48de3 tests: Use new name of static context 53796d2b24 contexts: Rename static context 72fedf8a6c docs: Improve docs for static context 316ac7625a contexts: Deprecate all context flags except SECP256K1_CONTEXT_NONE 477f02c4de Merge bitcoin-core/secp256k1#1165: gitignore: Add *.sage.py files autogenerated by sage [skip ci] 092be61c5e gitignore: Add *.sage.py files autogenerated by sage 1a553ee8be docs: Change signature "validation" to "verification" ee7341fbac docs: Never require a verification context 751c4354d5 Merge bitcoin-core/secp256k1#1152: Update macOS image for CI 2286f80902 Merge bitcoin-core/secp256k1#993: Enable non-experimental modules by default d216475205 test secp256k1_i128_to_i64 4bc429019d Add a secp256k1_i128_to_u64 function. e40fd277b7 Merge bitcoin-core/secp256k1#1156: Followups to int128_struct arithmetic 99bd335599 Make int128 overflow test use secp256k1_[ui]128_mul a8494b02bf Use compute credits for macOS jobs 3afce0af7c Avoid signed overflow in MSVC AMR64 secp256k1_mul128 c0ae48c995 Update macOS image for CI 9b5f589d30 Heuristically decide whether to use int128_struct 63ff064d2f int128: Add test override for testing __(u)mulh on MSVC X64 f2b7e88768 Add int128 randomized tests 6138d73be4 Merge bitcoin-core/secp256k1#1155: Add MSan CI jobs ddf2b2910e Merge bitcoin-core/secp256k1#1000: Synthetic int128 type. 86e3b38a4a Merge bitcoin-core/secp256k1#1149: Remove usage of CHECK from non-test file 00a42b91b3 Add MSan CI job 44916ae915 Merge bitcoin-core/secp256k1#1147: ci: print env to allow reproducing the job outside of CI c2ee9175e9 Merge bitcoin-core/secp256k1#1146: ci: prevent "-v/--version: not found" irrelevant error e13fae487e Merge bitcoin-core/secp256k1#1150: ci: always cat test_env.log a340d9500a ci: add int128_struct tests dceaa1f579 int128: Tidy #includes of int128.h and int128_impl.h 2914bccbc0 Simulated int128 type. 6a965b6b98 Remove usage of CHECK from non-test file 5c9f1a5c37 ci: always cat all logs_snippets 49ae843592 ci: mostly prevent "-v/--version: not found" irrelevant error 4e54c03153 ci: print env to allow reproducing the job outside of CI a43e982bca Merge bitcoin-core/secp256k1#1144: Cleanup `.gitignore` file f5039cb66c Cleanup `.gitignore` file 798727ae1e Revert "Add test logs to gitignore" 41e8704b48 build: Enable some modules by default 694ce8fb2d Merge bitcoin-core/secp256k1#1131: readme: Misc improvements 88b00897e7 readme: Fix line break 78f5296da4 readme: Sell "no runtime dependencies" ef48f088ad readme: Add IRC channel 9f8a13dc8e Merge bitcoin-core/secp256k1#1128: configure: Remove pkgconfig macros again (reintroduced by mismerge) cabe085bb4 configure: Remove pkgconfig macros again (reintroduced by mismerge) 3efeb9da21 Merge bitcoin-core/secp256k1#1121: config: Set preprocessor defaults for ECMULT_* config values 6a873cc4a9 Merge bitcoin-core/secp256k1#1122: tests: Randomize the context with probability 15/16 instead of 1/4 17065f48ae tests: Randomize the context with probability 15/16 instead of 1/4 c27ae45144 config: Remove basic-config.h da6514a04a config: Introduce DEBUG_CONFIG macro for debug output of config 63a3565e97 Merge bitcoin-core/secp256k1#1120: ecmult_gen: Skip RNG when creating blinding if no seed is available d0cf55e13a config: Set preprocessor defaults for ECMULT_* config values 55f8bc99dc ecmult_gen: Improve comments about projective blinding 7a86955800 ecmult_gen: Simplify code (no observable change) 4cc0b1b669 ecmult_gen: Skip RNG when creating blinding if no seed is available af65d30cc8 Merge bitcoin-core/secp256k1#1116: build: Fix #include "..." paths to get rid of further -I arguments 40a3473a9d build: Fix #include "..." paths to get rid of further -I arguments 43756da819 Merge bitcoin-core/secp256k1#1115: Fix sepc256k1 -> secp256k1 typo in group.h 069aba8125 Fix sepc256k1 -> secp256k1 typo in group.h accadc94df Merge bitcoin-core/secp256k1#1114: `_scratch_destroy`: move `VERIFY_CHECK` after invalid scrach space check cd47033335 Merge bitcoin-core/secp256k1#1084: ci: Add MSVC builds 1827c9bf2b scratch_destroy: move VERIFY_CHECK after invalid scrach space check 49e2acd927 configure: Improve rationale for WERROR_CFLAGS 8dc4b03341 ci: Add a C++ job that compiles the public headers without -fpermissive 51f296a46c ci: Run persistent wineserver to speed up wine 3fb3269c22 ci: Add 32-bit MinGW64 build 9efc2e5221 ci: Add MSVC builds 2be6ba0fed configure: Convince autotools to work with MSVC's archiver lib.exe bd81f4140a schnorrsig bench: Suppress a stupid warning in MSVC 09f3d71c51 configure: Add a few CFLAGS for MSVC 3b4f3d0d46 build: Reject C++ compilers in the preprocessor 1cc0941414 configure: Don't abort if the compiler does not define __STDC__ cca8cbbac8 configure: Output message when checking for valgrind 1a6be5745f bench: Make benchmarks compile on MSVC e089eecc1e group: Further simply gej_add_ge ac71020ebe group: Save a normalize_to_zero in gej_add_ge git-subtree-dir: src/secp256k1 git-subtree-split: bdf39000b9c6a0818e7149ccb500873d079e6e85
1 parent 8c4a264 commit 945b094

File tree

92 files changed

+4925
-2374
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

92 files changed

+4925
-2374
lines changed

.cirrus.yml

+152-69
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
env:
2+
### cirrus config
3+
CIRRUS_CLONE_DEPTH: 1
24
### compiler options
35
HOST:
6+
WRAPPER_CMD:
47
# Specific warnings can be disabled with -Wno-error=foo.
58
# -pedantic-errors is not equivalent to -Werror=pedantic and thus not implied by -Werror according to the GCC manual.
69
WERROR_CFLAGS: -Werror -pedantic-errors
@@ -22,21 +25,27 @@ env:
2225
SECP256K1_TEST_ITERS:
2326
BENCH: yes
2427
SECP256K1_BENCH_ITERS: 2
25-
CTIMETEST: yes
28+
CTIMETESTS: yes
2629
# Compile and run the tests
2730
EXAMPLES: yes
2831

32+
# https://cirrus-ci.org/pricing/#compute-credits
33+
credits_snippet: &CREDITS
34+
# Don't use any credits for now.
35+
use_compute_credits: false
36+
2937
cat_logs_snippet: &CAT_LOGS
3038
always:
3139
cat_tests_log_script:
3240
- cat tests.log || true
41+
cat_noverify_tests_log_script:
42+
- cat noverify_tests.log || true
3343
cat_exhaustive_tests_log_script:
3444
- cat exhaustive_tests.log || true
35-
cat_valgrind_ctime_test_log_script:
36-
- cat valgrind_ctime_test.log || true
45+
cat_ctime_tests_log_script:
46+
- cat ctime_tests.log || true
3747
cat_bench_log_script:
3848
- cat bench.log || true
39-
on_failure:
4049
cat_config_log_script:
4150
- cat config.log || true
4251
cat_test_env_script:
@@ -47,10 +56,8 @@ cat_logs_snippet: &CAT_LOGS
4756
merge_base_script_snippet: &MERGE_BASE
4857
merge_base_script:
4958
- if [ "$CIRRUS_PR" = "" ]; then exit 0; fi
50-
- git fetch $CIRRUS_REPO_CLONE_URL $CIRRUS_BASE_BRANCH
51-
- git config --global user.email "[email protected]"
52-
- git config --global user.name "ci"
53-
- git merge FETCH_HEAD # Merge base to detect silent merge conflicts
59+
- git fetch --depth=1 $CIRRUS_REPO_CLONE_URL "pull/${CIRRUS_PR}/merge"
60+
- git checkout FETCH_HEAD # Use merged changes to detect silent merge conflicts
5461

5562
linux_container_snippet: &LINUX_CONTAINER
5663
container:
@@ -69,13 +76,15 @@ task:
6976
- env: {WIDEMUL: int64, RECOVERY: yes}
7077
- env: {WIDEMUL: int64, ECDH: yes, SCHNORRSIG: yes}
7178
- env: {WIDEMUL: int128}
79+
- env: {WIDEMUL: int128_struct}
7280
- env: {WIDEMUL: int128, RECOVERY: yes, SCHNORRSIG: yes}
7381
- env: {WIDEMUL: int128, ECDH: yes, SCHNORRSIG: yes}
7482
- env: {WIDEMUL: int128, ASM: x86_64}
7583
- env: { RECOVERY: yes, SCHNORRSIG: yes}
76-
- env: {BUILD: distcheck, WITH_VALGRIND: no, CTIMETEST: no, BENCH: no}
84+
- env: {CTIMETESTS: no, RECOVERY: yes, ECDH: yes, SCHNORRSIG: yes, CPPFLAGS: -DVERIFY}
85+
- env: {BUILD: distcheck, WITH_VALGRIND: no, CTIMETESTS: no, BENCH: no}
7786
- env: {CPPFLAGS: -DDETERMINISTIC}
78-
- env: {CFLAGS: -O0, CTIMETEST: no}
87+
- env: {CFLAGS: -O0, CTIMETESTS: no}
7988
- env: { ECMULTGENPRECISION: 2, ECMULTWINDOW: 2 }
8089
- env: { ECMULTGENPRECISION: 8, ECMULTWINDOW: 4 }
8190
matrix:
@@ -107,65 +116,32 @@ task:
107116
<< : *CAT_LOGS
108117

109118
task:
110-
name: "x86_64: macOS Catalina"
119+
name: "arm64: macOS Ventura"
111120
macos_instance:
112-
image: catalina-base
121+
image: ghcr.io/cirruslabs/macos-ventura-base:latest
113122
env:
114123
HOMEBREW_NO_AUTO_UPDATE: 1
115124
HOMEBREW_NO_INSTALL_CLEANUP: 1
116-
# Cirrus gives us a fixed number of 12 virtual CPUs. Not that we even have that many jobs at the moment...
117-
MAKEFLAGS: -j13
125+
# Cirrus gives us a fixed number of 4 virtual CPUs. Not that we even have that many jobs at the moment...
126+
MAKEFLAGS: -j5
118127
matrix:
119128
<< : *ENV_MATRIX
129+
env:
130+
ASM: no
131+
WITH_VALGRIND: no
132+
CTIMETESTS: no
120133
matrix:
121134
- env:
122-
CC: gcc-9
135+
CC: gcc
123136
- env:
124137
CC: clang
125-
# Update Command Line Tools
126-
# Uncomment this if the Command Line Tools on the CirrusCI macOS image are too old to brew valgrind.
127-
# See https://apple.stackexchange.com/a/195963 for the implementation.
128-
## update_clt_script:
129-
## - system_profiler SPSoftwareDataType
130-
## - touch /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
131-
## - |-
132-
## PROD=$(softwareupdate -l | grep "*.*Command Line" | tail -n 1 | awk -F"*" '{print $2}' | sed -e 's/^ *//' | sed 's/Label: //g' | tr -d '\n')
133-
## # For debugging
134-
## - softwareupdate -l && echo "PROD: $PROD"
135-
## - softwareupdate -i "$PROD" --verbose
136-
## - rm /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
137-
##
138-
brew_valgrind_pre_script:
139-
# Retry a few times because this tends to fail randomly.
140-
- for i in {1..5}; do brew update && break || sleep 15; done
141-
- brew config
142-
- brew tap LouisBrunner/valgrind
143-
# Fetch valgrind source but don't build it yet.
144-
- brew fetch --HEAD LouisBrunner/valgrind/valgrind
145-
brew_valgrind_cache:
146-
# This is $(brew --cellar valgrind) but command substition does not work here.
147-
folder: /usr/local/Cellar/valgrind
148-
# Rebuild cache if ...
149-
fingerprint_script:
150-
# ... macOS version changes:
151-
- sw_vers
152-
# ... brew changes:
153-
- brew config
154-
# ... valgrind changes:
155-
- git -C "$(brew --cache)/valgrind--git" rev-parse HEAD
156-
populate_script:
157-
# If there's no hit in the cache, build and install valgrind.
158-
- brew install --HEAD LouisBrunner/valgrind/valgrind
159-
brew_valgrind_post_script:
160-
# If we have restored valgrind from the cache, tell brew to create symlink to the PATH.
161-
# If we haven't restored from cached (and just run brew install), this is a no-op.
162-
- brew link valgrind
163138
brew_script:
164-
- brew install automake libtool gcc@9
139+
- brew install automake libtool gcc
165140
<< : *MERGE_BASE
166141
test_script:
167142
- ./ci/cirrus.sh
168143
<< : *CAT_LOGS
144+
<< : *CREDITS
169145

170146
task:
171147
name: "s390x (big-endian): Linux (Debian stable, QEMU)"
@@ -178,7 +154,7 @@ task:
178154
ECDH: yes
179155
RECOVERY: yes
180156
SCHNORRSIG: yes
181-
CTIMETEST: no
157+
CTIMETESTS: no
182158
<< : *MERGE_BASE
183159
test_script:
184160
# https://sourceware.org/bugzilla/show_bug.cgi?id=27008
@@ -197,7 +173,7 @@ task:
197173
ECDH: yes
198174
RECOVERY: yes
199175
SCHNORRSIG: yes
200-
CTIMETEST: no
176+
CTIMETESTS: no
201177
matrix:
202178
- env: {}
203179
- env: {EXPERIMENTAL: yes, ASM: arm}
@@ -217,7 +193,7 @@ task:
217193
ECDH: yes
218194
RECOVERY: yes
219195
SCHNORRSIG: yes
220-
CTIMETEST: no
196+
CTIMETESTS: no
221197
<< : *MERGE_BASE
222198
test_script:
223199
- ./ci/cirrus.sh
@@ -234,24 +210,70 @@ task:
234210
ECDH: yes
235211
RECOVERY: yes
236212
SCHNORRSIG: yes
237-
CTIMETEST: no
213+
CTIMETESTS: no
238214
<< : *MERGE_BASE
239215
test_script:
240216
- ./ci/cirrus.sh
241217
<< : *CAT_LOGS
242218

243219
task:
244-
name: "x86_64 (mingw32-w64): Windows (Debian stable, Wine)"
245220
<< : *LINUX_CONTAINER
246221
env:
247-
WRAPPER_CMD: wine64-stable
248-
SECP256K1_TEST_ITERS: 16
249-
HOST: x86_64-w64-mingw32
222+
WRAPPER_CMD: wine
223+
WITH_VALGRIND: no
224+
ECDH: yes
225+
RECOVERY: yes
226+
SCHNORRSIG: yes
227+
CTIMETESTS: no
228+
matrix:
229+
- name: "x86_64 (mingw32-w64): Windows (Debian stable, Wine)"
230+
env:
231+
HOST: x86_64-w64-mingw32
232+
- name: "i686 (mingw32-w64): Windows (Debian stable, Wine)"
233+
env:
234+
HOST: i686-w64-mingw32
235+
<< : *MERGE_BASE
236+
test_script:
237+
- ./ci/cirrus.sh
238+
<< : *CAT_LOGS
239+
240+
task:
241+
<< : *LINUX_CONTAINER
242+
env:
243+
WRAPPER_CMD: wine
244+
WERROR_CFLAGS: -WX
250245
WITH_VALGRIND: no
251246
ECDH: yes
252247
RECOVERY: yes
248+
EXPERIMENTAL: yes
253249
SCHNORRSIG: yes
254-
CTIMETEST: no
250+
CTIMETESTS: no
251+
# Use a MinGW-w64 host to tell ./configure we're building for Windows.
252+
# This will detect some MinGW-w64 tools but then make will need only
253+
# the MSVC tools CC, AR and NM as specified below.
254+
HOST: x86_64-w64-mingw32
255+
CC: /opt/msvc/bin/x64/cl
256+
AR: /opt/msvc/bin/x64/lib
257+
NM: /opt/msvc/bin/x64/dumpbin -symbols -headers
258+
# Set non-essential options that affect the CLI messages here.
259+
# (They depend on the user's taste, so we don't want to set them automatically in configure.ac.)
260+
CFLAGS: -nologo -diagnostics:caret
261+
LDFLAGS: -Xlinker -Xlinker -Xlinker -nologo
262+
matrix:
263+
- name: "x86_64 (MSVC): Windows (Debian stable, Wine)"
264+
- name: "x86_64 (MSVC): Windows (Debian stable, Wine, int128_struct)"
265+
env:
266+
WIDEMUL: int128_struct
267+
- name: "x86_64 (MSVC): Windows (Debian stable, Wine, int128_struct with __(u)mulh)"
268+
env:
269+
WIDEMUL: int128_struct
270+
CPPFLAGS: -DSECP256K1_MSVC_MULH_TEST_OVERRIDE
271+
- name: "i686 (MSVC): Windows (Debian stable, Wine)"
272+
env:
273+
HOST: i686-w64-mingw32
274+
CC: /opt/msvc/bin/x86/cl
275+
AR: /opt/msvc/bin/x86/lib
276+
NM: /opt/msvc/bin/x86/dumpbin -symbols -headers
255277
<< : *MERGE_BASE
256278
test_script:
257279
- ./ci/cirrus.sh
@@ -264,7 +286,7 @@ task:
264286
ECDH: yes
265287
RECOVERY: yes
266288
SCHNORRSIG: yes
267-
CTIMETEST: no
289+
CTIMETESTS: no
268290
matrix:
269291
- name: "Valgrind (memcheck)"
270292
container:
@@ -301,14 +323,40 @@ task:
301323
- ./ci/cirrus.sh
302324
<< : *CAT_LOGS
303325

326+
# Memory sanitizers
304327
task:
305-
name: "C++ -fpermissive"
306328
<< : *LINUX_CONTAINER
329+
name: "MSan"
307330
env:
308-
# ./configure correctly errors out when given CC=g++.
309-
# We hack around this by passing CC=g++ only to make.
310-
CC: gcc
311-
MAKEFLAGS: -j4 CC=g++ CFLAGS=-fpermissive\ -g
331+
ECDH: yes
332+
RECOVERY: yes
333+
SCHNORRSIG: yes
334+
CTIMETESTS: yes
335+
CC: clang
336+
SECP256K1_TEST_ITERS: 32
337+
ASM: no
338+
WITH_VALGRIND: no
339+
container:
340+
memory: 2G
341+
matrix:
342+
- env:
343+
CFLAGS: "-fsanitize=memory -g"
344+
- env:
345+
ECMULTGENPRECISION: 2
346+
ECMULTWINDOW: 2
347+
CFLAGS: "-fsanitize=memory -g -O3"
348+
<< : *MERGE_BASE
349+
test_script:
350+
- ./ci/cirrus.sh
351+
<< : *CAT_LOGS
352+
353+
task:
354+
name: "C++ -fpermissive (entire project)"
355+
<< : *LINUX_CONTAINER
356+
env:
357+
CC: g++
358+
CFLAGS: -fpermissive -g
359+
CPPFLAGS: -DSECP256K1_CPLUSPLUS_TEST_OVERRIDE
312360
WERROR_CFLAGS:
313361
ECDH: yes
314362
RECOVERY: yes
@@ -318,9 +366,44 @@ task:
318366
- ./ci/cirrus.sh
319367
<< : *CAT_LOGS
320368

369+
task:
370+
name: "C++ (public headers)"
371+
<< : *LINUX_CONTAINER
372+
test_script:
373+
- g++ -Werror include/*.h
374+
- clang -Werror -x c++-header include/*.h
375+
- /opt/msvc/bin/x64/cl.exe -c -WX -TP include/*.h
376+
321377
task:
322378
name: "sage prover"
323379
<< : *LINUX_CONTAINER
324380
test_script:
325381
- cd sage
326382
- sage prove_group_implementations.sage
383+
384+
task:
385+
name: "x86_64: Windows (VS 2022)"
386+
windows_container:
387+
image: cirrusci/windowsservercore:visualstudio2022
388+
cpu: 4
389+
memory: 3840MB
390+
env:
391+
PATH: '%CIRRUS_WORKING_DIR%\build\src\RelWithDebInfo;%PATH%'
392+
x64_NATIVE_TOOLS: '"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"'
393+
# Ignore MSBuild warning MSB8029.
394+
# See: https://learn.microsoft.com/en-us/visualstudio/msbuild/errors/msb8029?view=vs-2022
395+
IgnoreWarnIntDirInTempDetected: 'true'
396+
merge_script:
397+
- PowerShell -NoLogo -Command if ($env:CIRRUS_PR -ne $null) { git fetch $env:CIRRUS_REPO_CLONE_URL pull/$env:CIRRUS_PR/merge; git reset --hard FETCH_HEAD; }
398+
configure_script:
399+
- '%x64_NATIVE_TOOLS%'
400+
- cmake -G "Visual Studio 17 2022" -A x64 -S . -B build -DSECP256K1_ENABLE_MODULE_RECOVERY=ON -DSECP256K1_BUILD_EXAMPLES=ON
401+
build_script:
402+
- '%x64_NATIVE_TOOLS%'
403+
- cmake --build build --config RelWithDebInfo -- -property:UseMultiToolTask=true;CL_MPcount=5
404+
check_script:
405+
- '%x64_NATIVE_TOOLS%'
406+
- ctest --test-dir build -j 5
407+
- build\src\RelWithDebInfo\bench_ecmult.exe
408+
- build\src\RelWithDebInfo\bench_internal.exe
409+
- build\src\RelWithDebInfo\bench.exe

0 commit comments

Comments
 (0)