Hennadii Stepanov
755629bc03
cmake: Use full signature of add_test()
command
...
An executable target in the `COMMAND` option will automatically be
replaced by the location of the executable created at build time.
This change fixes tests for Windows binaries using Wine.
2023-04-29 09:49:25 +01:00
Tim Ruffing
6b7e5b717d
Merge bitcoin-core/secp256k1#1275 : build: Fix C4005 "macro redefinition" MSVC warnings in examples
...
dc0657c7622f5a13afc3876eca7e2fc7cabb9a10 build: Fix C4005 "macro redefinition" MSVC warnings in examples (Hennadii Stepanov)
Pull request description:
This PR:
- fixes C4005 "macro redefinition" MSVC warnings in examples
- removes warning suppressions in both build systems, Autotools-based and CMake-based ones
ACKs for top commit:
real-or-random:
utACK dc0657c7622f5a13afc3876eca7e2fc7cabb9a10
Tree-SHA512: fe3bb8f06b3ff1d51e5e20754a289e0e6b99ddf4c0bd4e6e4786e2558e71e043ab23ff7782a83a902df5db28d18ae65312674c373fdc49f5af252763a22bd0fb
2023-04-26 16:44:51 +01:00
Tim Ruffing
a6f4bcf6e1
Merge bitcoin-core/secp256k1#1231 : Move SECP256K1_INLINE
macro definition out from include/secp256k1.h
...
8e142ca4102ade1b90dcb06d6c78405ef3220599 Move `SECP256K1_INLINE` macro definition out from `include/secp256k1.h` (Hennadii Stepanov)
77445898a5852ecd38ab95cfb329333a82673115 Remove `SECP256K1_INLINE` usage from examples (Hennadii Stepanov)
Pull request description:
From [IRC](https://gnusha.org/secp256k1/2023-01-31.log ):
> 06:29 \< hebasto\> What are reasons to define the `SECP256K1_INLINE` macro in user's `include/secp256k1.h` header, while it is used internally only?
> 06:32 \< hebasto\> I mean, any other (or a new dedicated) header in `src` looks more appropriate, no?
> 06:35 \< sipa\> I think it may just predate any "utility" internal headers.
> 06:42 \< sipa\> I think it makes sense to move it to util.h
Pros:
- it is a step in direction to better organized headers (in context of #924 , #1039 )
Cons:
- code duplication for `SECP256K1_GNUC_PREREQ` macro
ACKs for top commit:
sipa:
utACK 8e142ca4102ade1b90dcb06d6c78405ef3220599
real-or-random:
utACK 8e142ca410
Tree-SHA512: 180e0ba7c2ef242b765f20698b67d06c492b7b70866c21db27c18d8b2e85c3e11f86c6cb99ffa88bbd23891ce3ee8a24bc528f2c91167ec2fddc167463f78eac
2023-04-20 18:18:11 +02:00
Cory Fields
ef49a11d29
build: allow static or shared but not both
2023-04-17 16:25:27 +00:00
Hennadii Stepanov
dc0657c762
build: Fix C4005 "macro redefinition" MSVC warnings in examples
2023-04-13 12:23:30 +01:00
Hennadii Stepanov
77445898a5
Remove SECP256K1_INLINE
usage from examples
2023-03-09 13:05:14 +00:00
Hennadii Stepanov
8be82d4362
cmake: Rename project to "libsecp256k1"
2023-03-08 21:22:24 +00:00
Pieter Wuille
df323b5c14
Merge bitcoin-core/secp256k1#1113 : build: Add CMake-based build system
...
e1eb33724c2ca47855a8c1dada421cabdb717fe7 ci: Add "x86_64: Windows (VS 2022)" task (Hennadii Stepanov)
10602b0030e67c830596e08ffc775039ee0b2607 cmake: Export config files (Hennadii Stepanov)
5468d709644823b6302141ff93d0b946b70def4a build: Add CMake-based build system (Hennadii Stepanov)
Pull request description:
This PR adds a [CMake](https://cmake.org/ )-based build system.
Added build instructions and examples to the [`README.md`](https://github.com/hebasto/secp256k1/blob/220628-cmake/README.md#building-with-cmake-experimental ) file.
Ways to integrate with downstream CMake-based projects:
- if `secp256k1` is a subtree (including Bitcoin Core project) -- `add_subdirectory(secp256k1)`
- if `secp256k1` has been installed -- `find_package(secp256k1 0.2.1 CONFIG)`, see https://github.com/hebasto/secp256k1-CMake-example
Added a few toolchain files for easy cross compiling.
Discussions on IRC:
- https://gnusha.org/secp256k1/2022-06-23.log
- https://gnusha.org/secp256k1/2022-06-24.log
- https://gnusha.org/secp256k1/2022-06-27.log
- https://gnusha.org/secp256k1/2023-01-30.log
---
Related PRs:
- #315
- #549
- #761
---
**Implementation notes**
Minimum required CMake version is 3.1. This was required to provide [`C_STANDARD`](https://cmake.org/cmake/help/latest/prop_tgt/C_STANDARD.html ) property.
In turn, this choice of CMake version implies it is not possible to build with default CMake on Debian 8, which has CMake v3.0.2 only.
Also see:
- [CMake Versions on Linux Distros](https://gitlab.kitware.com/cmake/community/-/wikis/CMake-Versions-on-Linux-Distros )
- https://repology.org/project/cmake/versions
---
# Autotools -- CMake Feature Parity Tables
## 1. Configuration options
Autotool-based build system features being listed according to the `./configure --help` output.
| Autotools | CMake |
|---|---|
| `--prefix` | `-DCMAKE_INSTALL_PREFIX`
| `--enable-shared` | `-DSECP256K1_BUILD_SHARED` |
| `--enable-static` | `-DSECP256K1_BUILD_STATIC` |
| `--enable-dev-mode` _hidden_ | N/A, see https://github.com/bitcoin-core/secp256k1/pull/1113#discussion_r916979117 |
| `--enable-benchmark` | `-DSECP256K1_BUILD_BENCHMARK` |
| `--enable-coverage` | `-DCMAKE_BUILD_TYPE=Coverage` |
| `--enable-tests` | `-DSECP256K1_BUILD_TESTS` |
| `--enable-ctime-tests` | `-DSECP256K1_BUILD_CTIME_TESTS` |
| `--enable-experimental` | `-DSECP256K1_EXPERIMENTAL` |
| `--enable-exhaustive-tests` | `-DSECP256K1_BUILD_EXHAUSTIVE_TESTS` |
| `--enable-examples` | `-DSECP256K1_BUILD_EXAMPLES` |
| `--enable-module-ecdh` | `-DSECP256K1_ENABLE_MODULE_ECDH` |
| `--enable-module-recovery` | `-DSECP256K1_ENABLE_MODULE_RECOVERY` |
| `--enable-module-extrakeys` | `-DSECP256K1_ENABLE_MODULE_EXTRAKEYS` |
| `--enable-module-schnorrsig` | `-DSECP256K1_ENABLE_MODULE_SCHNORRSIG` |
| `--enable-external-default-callbacks` | `-DSECP256K1_USE_EXTERNAL_DEFAULT_CALLBACKS` |
| `--with-test-override-wide-multiply` _hidden_ | `-DSECP256K1_TEST_OVERRIDE_WIDE_MULTIPLY` |
| `--with-asm` | `-DSECP256K1_ASM` |
| `--with-ecmult-window` | `-DSECP256K1_ECMULT_WINDOW_SIZE` |
| `--with-ecmult-gen-precision` | `-DSECP256K1_ECMULT_GEN_PREC_BITS` |
| `--with-valgrind` | `-DSECP256K1_VALGRING` |
A screenshot of grouped options from `cmake-gui`:

## 2. `make` targets
| Autotools | CMake |
|---|---|
| `make` | `make` |
| `make check` | `make check` |
| `make install` | `make install` * |
* Installation of `lib/pkgconfig/libsecp256k1.pc` not implemented.
ACKs for top commit:
theuni:
ACK e1eb33724c2ca47855a8c1dada421cabdb717fe7.
sipa:
ACK e1eb33724c2ca47855a8c1dada421cabdb717fe7
real-or-random:
ACK e1eb33724c2ca47855a8c1dada421cabdb717fe7
Tree-SHA512: ebe2772eeb1a430a0a7ae767fb1a9a82d52d5e9bf2306956cd08f7b442c862be2539774dd10d5555817353d37d1c6add78b8fe5a85bb71239304fb42c98ff337
2023-03-08 10:33:09 -05:00
Hennadii Stepanov
5468d70964
build: Add CMake-based build system
...
Co-authored-by: Tim Ruffing <crypto@timruffing.de>
2023-03-08 13:33:16 +00:00
Tim Ruffing
5757318782
Merge bitcoin-core/secp256k1#1212 : Prevent dead-store elimination when clearing secrets in examples
...
5660c137552c657da5265691dea0fb10faae6a76 prevent optimization in algorithms (Harshil Jani)
Pull request description:
Signed-off-by: Harshil Jani <harshiljani2002@gmail.com>
ACKs for top commit:
sipa:
utACK 5660c137552c657da5265691dea0fb10faae6a76
real-or-random:
utACK 5660c137552c657da5265691dea0fb10faae6a76
Tree-SHA512: 90024b7445c04e18a88af4099fc1ac6d1b9b2309b88dd22ae2b1f50aed7bac28b2c180cc28e1a95d5e9ec94b4c4adc44b9ada1477e6abe8efae7884c2382645c
2023-03-02 23:30:20 +01:00
Harshil Jani
5660c13755
prevent optimization in algorithms
...
Signed-off-by: Harshil Jani <harshiljani2002@gmail.com>
Add secure_erase function to clear secrets
Signed-off-by: Harshil Jani <harshiljani2002@gmail.com>
Update the function with good practices
Signed-off-by: Harshil Jani <harshiljani2002@gmail.com>
Renaming random.h to examples_util.h
Signed-off-by: Harshil Jani <harshiljani2002@gmail.com>
2023-03-02 15:36:41 +05:30
Tim Ruffing
739c53b19a
examples: Extend sig examples by call that uses static context
...
Besides improving the examples, this makes sure that the examples
import a variable (instead of a function), namely the static context,
from the library. This is helpful when testing MSVC builds, because
the MSVC linker tends to be awkward when importing variables.
2023-02-06 21:44:56 +01:00
Tim Ruffing
4386a2306c
examples: Switch to NONE contexts
2022-12-05 11:26:44 +01:00
Tim Ruffing
f813bb0df3
schnorrsig: Adapt example to new API
2022-03-17 22:41:36 +01:00
Tim Ruffing
99e6568fc6
schnorrsig: Rename schnorrsig_sign to schnorsig_sign32 and deprecate
2022-03-17 22:41:36 +01:00
Elichai Turkel
7c9502cece
Add a copy of the CC0 license to the examples
2022-02-23 16:15:00 +02:00
Elichai Turkel
422a7cc86a
Add a ecdh shared secret example
...
Co-authored-by: Jonas Nick <jonasd.nick@gmail.com>
2022-02-23 16:14:57 +02:00
Elichai Turkel
b0cfbcc143
Add a Schnorr signing and verifying example
...
Co-authored-by: Jonas Nick <jonasd.nick@gmail.com>
2022-02-23 16:14:55 +02:00
Elichai Turkel
fee7d4bf9e
Add an ECDSA signing and verifying example
...
Co-authored-by: Jonas Nick <jonasd.nick@gmail.com>
2022-02-23 16:14:53 +02:00