Skip to content

Conversation

real-or-random
Copy link
Contributor

@real-or-random real-or-random commented Jul 2, 2025

This is less invasive than #1695. The latter might be the right thing in a new library (and then we'd probably not support autotools in the first place), but any semantic change to this code has the potential to create news bug, or at least breakages for downstream users.

This is different from #1677 in that it does not set hidden explicitly. I agree with the comment in #1677 that setting hidden violates the principle of least surprise.

So this similar in spirit to #1674. So I wonder if this should also include
3eef736. I'd say no, fvisibility should then set by the user. But can you, in CMake, set CMAKE_C_VISIBILITY_PRESET from a parent project?

@hebasto
Copy link
Member

hebasto commented Jul 2, 2025

But can you, in CMake, set CMAKE_C_VISIBILITY_PRESET from a parent project?

Yes, we can.

@real-or-random
Copy link
Contributor Author

cc @theuni @purpleKarrot

@theuni
Copy link
Contributor

theuni commented Jul 2, 2025

LGTM.

A few thoughts:

  • Suggest renaming to SECP256K1_NO_FUNCTION_VISIBILITY_ATTRIBUTES because this does not affect SECP256K1_LOCAL_VAR.
  • To address @hebasto's comment, a CMake option could be added to define SECP256K1_NO_FUNCTION_VISIBILITY_ATTRIBUTES during build, so that parent projects can use it rather than having to mess with cflags.
  • If you don't want to go as far as reverting 3eef736, symbols could be hidden by default but override-able.

Those two would add up to:

option(SECP256K1_ENABLE_VISIBILITY_ATTRIBUTES "Enable visibility attributes when compiling the library" ON)
if (NOT DEFINED CMAKE_C_VISIBILITY_PRESET)
  set(CMAKE_C_VISIBILITY_PRESET hidden)
endif()
...
if(NOT SECP256K1_ENABLE_FUNCTION_VISIBILITY_ATTRIBUTES)
  target_compile_definitions(secp256k1 PRIVATE SECP256K1_NO_FUNCTON_VISIBILITY_ATTRIBUTES)
endif() 

But I noticed while testing combinations of the above that it leads to broken outcomes for test binaries when simply disabling the SECP256K1_ENABLE_FUNCTION_VISIBILITY_ATTRIBUTES option, since then by default we'd be building shared libs with hidden visibility and no default attributes for the abi.

To be robust against that, we'd need something like:

option(SECP256K1_ENABLE_VISIBILITY_ATTRIBUTES "Enable visibility attributes when compiling the library" ON)
if (SECP256K1_ENABLE_FUNCTION_VISIBILITY_ATTRIBUTES AND NOT DEFINED CMAKE_C_VISIBILITY_PRESET)
  set(CMAKE_C_VISIBILITY_PRESET hidden)
endif()

Which of course would defeat the purpose. So I propose that we just skip trying to set CMAKE_C_VISIBILITY_PRESET altogether. Parent projects can mess with that when they know what they're doing.

tl;dr: I think this is the best solution so far, but propose adding a helper option to make life easier for parent projects: theuni@e22ed8c

Core would then set CMAKE_C_VISIBILITY_PRESET=hiddden and SECP256K1_ENABLE_FUNCTION_VISIBILITY_ATTRIBUTES=false and be all set.

@real-or-random
Copy link
Contributor Author

Suggest renaming to SECP256K1_NO_FUNCTION_VISIBILITY_ATTRIBUTES because this does not affect SECP256K1_LOCAL_VAR.

True, but we also apply it to variables, e.g., secp256k1_context_static. And the LOCAL_VAR are really internal.

Perhaps SECP256K1_NO_API_VISIBILITY_ATTRIBUTES. Well, if someone has a shorter name that is still clear, please let me know. :)

@real-or-random
Copy link
Contributor Author

real-or-random commented Jul 2, 2025

(edit: nevermind, got it now)

@real-or-random
Copy link
Contributor Author

But I noticed while testing combinations of the above that it leads to broken outcomes for test binaries when simply disabling the SECP256K1_ENABLE_FUNCTION_VISIBILITY_ATTRIBUTES option, since then by default we'd be building shared libs with hidden visibility and no default attributes for the abi.

Right, that's the just same problem as with your #1674.

Which of course would defeat the purpose. So I propose that we just skip trying to set CMAKE_C_VISIBILITY_PRESET altogether. Parent projects can mess with that when they know what they're doing.

tl;dr: I think this is the best solution so far, but propose adding a helper option to make life easier for parent projects: theuni@e22ed8c

Sounds good to me.

@fanquake
Copy link
Member

fanquake commented Jul 3, 2025

cc @purpleKarrot

@purpleKarrot
Copy link
Contributor

I don't get why additional #defines or cmake-options are necessary. As I pointed out in #1677 (comment), there are three different modes the header file needs to be interpreted as. To distinguish between these three cases, two defines are needed: SECP256K1_STATIC and SECP256K1_BUILD.

SECP256K1_BUILD needs to be defined when building the library, no matter whether the library is static or dynamic. This is defined in src/secp256k1.c before including secp256k1.h. The current approach is build system agnostic. No further change needed.

SECP256K1_STATIC needs to be defined when a static library is used or consumed. Both Makefile.am and CMakeLists.txt already mention this name. The only necessary change is to drop the "if (windows)" condition.

(Both cmake and libtool set a define symbol when building a shared library. This symbol alone is insufficient to distinguish between three different cases. When using custom defines, the symbols set by those tools is redundant. The approach of using SECP256K1_STATIC and SECP256K1_BUILD is portable and build system independent.)

@hebasto
Copy link
Member

hebasto commented Jul 3, 2025

I've spent some time re-reading all the other competing PRs, including #1674, #1677, #1695), and discussing the topic offline with @purpleKarrot.

Concept ACK on this one.

tl;dr: I think this is the best solution so far, but propose adding a helper option to make life easier for parent projects: theuni@e22ed8c

Sounds good to me.

+1.

@purpleKarrot
Copy link
Contributor

I am failing to reason about all the different paths through that #ifdef-maze and whether they are truly all covered by actual requirements. Exactly what is the use case this new code wants to support without breaking what other requirements? I am sure such a list exits, even if not explicitly written down, otherwise we would not have this discussion. Extracting a platform abstraction as suggested in #1677 (comment) and https://gcc.gnu.org/wiki/Visibility (see the Step-by-step guide) could help comparing the code with those requirements.

The latter might be the right thing in a new library ...

I am a bit concerned that new libraries might follow the example set here. There should be a big disclaimer that points people to that GCC wiki page.

/* Consuming libsecp256k1 as a DLL. */
# define SECP256K1_API extern __declspec (dllimport)
# endif
#if !defined(SECP256K1_API) && defined(SECP256K1_NO_VISIBILITY_ATTRIBUTES)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My apologies if this was discussed earlier and I missed it, but it seems that SECP256K1_NO_VISIBILITY_ATTRIBUTES should only be considered only when building the library, not when consuming it:

Suggested change
#if !defined(SECP256K1_API) && defined(SECP256K1_NO_VISIBILITY_ATTRIBUTES)
#if !defined(SECP256K1_API) && defined(SECP256K1_BUILD) && defined(SECP256K1_NO_VISIBILITY_ATTRIBUTES)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think that it hurts to apply it when consuming the library. Or does it have any undesirable effects?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think that it hurts to apply it when consuming the library. Or does it have any undesirable effects?

None of those. I only found it easier to read the code.

@jonasnick jonasnick added this to the 0.7.0 milestone Jul 14, 2025
@real-or-random
Copy link
Contributor Author

SECP256K1_STATIC needs to be defined when a static library is used or consumed. Both Makefile.am and CMakeLists.txt already mention this name. The only necessary change is to drop the "if (windows)" condition.

This changes the meaning of SECP256K1_STATIC. So far, it's a consume-only macro (as explained in the code comments here).
I'd like to avoid the need to set SECP256K1_STATIC when building a static library, and only in Windows. (In earlier versions, we didn't even require the user to set SECP256K1_STATIC when consuming the library, but this was not possible without accepting that MSVC emits warnings, so it was changed.)

Why avoid the need to set SECP256K1_STATIC when building? First, it's more convenient for anyone who runs a build. Second, that's how it always was, so it's in particular more convenient for people who upgrade from earlier versions. Third, the existing logic is well-tested and has worked so far -- we're not fighting a bug, we're responding to a (somewhat unusual) feature request from Bitcoin Core -- so I'd like to avoid semantic changes that could introduce bugs. (But yes, refactoring seems a good idea.) Fourth, I don't know what the implications for autotools builds are: The ./configure script by default creates a build system that builds both the shared and the static library. If you ask me, that's a bad design choice in autoconf, but there's not much we can do about it except force the user to select one of the builds, which again, is not convenient and also unexpected to users familiar with autotools.

(Both cmake and libtool set a define symbol when building a shared library.)

I doubt that's true. As explained by @theuni in #1674, there's no such macro. There's just EXPORT_DLL, but this is set only on Windows.

The approach of using SECP256K1_STATIC and SECP256K1_BUILD is portable and build system independent.

Sure, writing it from scratch would lead to simpler code but my point is that the aforementioned arguments are stronger.

@real-or-random
Copy link
Contributor Author

Suggest renaming to SECP256K1_NO_FUNCTION_VISIBILITY_ATTRIBUTES because this does not affect SECP256K1_LOCAL_VAR.

True, but we also apply it to variables, e.g., secp256k1_context_static. And the LOCAL_VAR are really internal.

Renamed to SECP256K1_API_FUNCTION_VISIBILITY_ATTRIBUTES

tl;dr: I think this is the best solution so far, but propose adding a helper option to make life easier for parent projects: theuni@e22ed8c

Cherry-pick (and renamed the option accordingly).

It would be nice to get reviews by the end of the week, then we may get this into 0.7.0.

Copy link
Contributor

@theuni theuni left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me.

I'm really not too concerned about the implementation as long as we have the escape hatch. Thanks for adding the CMake option, that should make Core's integration nice and clean.

@hebasto
Copy link
Member

hebasto commented Jul 18, 2025

(Both cmake and libtool set a define symbol when building a shared library.)

I doubt that's true.

It is. By default, CMake defines -D{lib_name}_EXPORTS. It happens to be overridden here:

if(WIN32)
# Define our export symbol only for shared libs.
set_target_properties(secp256k1 PROPERTIES DEFINE_SYMBOL SECP256K1_DLL_EXPORT)

@hebasto
Copy link
Member

hebasto commented Jul 18, 2025

Suggest renaming to SECP256K1_NO_FUNCTION_VISIBILITY_ATTRIBUTES because this does not affect SECP256K1_LOCAL_VAR.

True, but we also apply it to variables, e.g., secp256k1_context_static. And the LOCAL_VAR are really internal.

Renamed to SECP256K1_API_FUNCTION_VISIBILITY_ATTRIBUTES

Which change exactly are you referring to?

@real-or-random
Copy link
Contributor Author

real-or-random commented Jul 18, 2025

Which change exactly are you referring to?

I'm not entirely sure what your question is, but the name should now both contain API in the C code now and in CMake. I added API to the name to emphasize that the setting applies only to symbols in the public API.

@real-or-random
Copy link
Contributor Author

(Both cmake and libtool set a define symbol when building a shared library.)

I doubt that's true.

It is. By default, CMake defines -D{lib_name}_EXPORTS. It happens to be overridden here:

if(WIN32)
# Define our export symbol only for shared libs.
set_target_properties(secp256k1 PROPERTIES DEFINE_SYMBOL SECP256K1_DLL_EXPORT)

Indeed, but my claim is that there is no thing for libtool or autotools. The only define that libtool sets is EXPORT_DLL, but this is restricted to Windows.

Co-authored-by: Tim Ruffing <me@real-or-random.org>
Copy link
Member

@hebasto hebasto left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK c82d84b, I have reviewed the code and it looks OK.

Tested on Ubuntu 25.04 with Bitcoin Core in the "monokernel" integration scenario with additional set(CMAKE_C_VISIBILITY_PRESET hidden) and set(SECP256K1_ENABLE_API_VISIBILITY_ATTRIBUTES OFF CACHE BOOL "" FORCE).

UPD. Additionally, the same scenario has been successfully tested on macOS Sequoia 15.5.

@real-or-random real-or-random merged commit 7c33804 into bitcoin-core:master Jul 21, 2025
116 checks passed
fanquake added a commit to fanquake/bitcoin that referenced this pull request Jul 22, 2025
b9313c6e1a Merge bitcoin-core/secp256k1#1708: release cleanup: bump version after 0.7.0
a660a4976e Merge bitcoin-core/secp256k1#1707: release: Prepare for 0.7.0
7ab8b0cc01 release cleanup: bump version after 0.7.0
a3e742d947 release: Prepare for 0.7.0
f67b0ac1a0 ci: Don't hardcode ABI version
020ee60495 Merge bitcoin-core/secp256k1#1706: musig/tests: initialize keypair
cde4130898 musig/tests: initialize keypair
6037833c9e Merge bitcoin-core/secp256k1#1702: changelog: update
40b4a06520 changelog: update
5e74086dc8 Merge bitcoin-core/secp256k1#1705: musig/test: Remove dead code
7c3380423c Merge bitcoin-core/secp256k1#1696: build: Refactor visibility logic and add override
8d967a602b musig/test: Remove dead code
983711cd6d musig/tests: Refactor vectors_signverify
73a695958a Merge bitcoin-core/secp256k1#1704: cmake: Make `secp256k1_objs` inherit interface defines from `secp256k1`
bf082221ff cmake: Make `secp256k1_objs` inherit interface defines from `secp256k1`
c82d84bb86 build: add CMake option for disabling symbol visibility attributes
ce7923874f build: Add SECP256K1_NO_API_VISIBILITY_ATTRIBUTES
e5297f6d79 build: Refactor visibility logic
cbbbf3bd6e Merge bitcoin-core/secp256k1#1699: ci: enable musig module for native macOS arm64 job
943479a7a3 Merge bitcoin-core/secp256k1#1694: Revert "cmake: configure libsecp256k1.pc during install"
3352f9d667 ci: enable musig module for native macOS arm64 job
ad60ef7ea7 Merge bitcoin-core/secp256k1#1689: ci: Convert `arm64` Cirrus tasks to GHA jobs
c498779096 Merge bitcoin-core/secp256k1#1687: cmake: support the use of launchers in ctest -S scripts
44b205e9ee Revert "cmake: configure libsecp256k1.pc during install"
0dfe387dbe cmake: support the use of launchers in ctest -S scripts
89096c234d Merge bitcoin-core/secp256k1#1692: cmake: configure libsecp256k1.pc during install
7106dce6fd cmake: configure libsecp256k1.pc during install
29e73f4ba5 Merge bitcoin-core/secp256k1#1685: cmake: Emulate Libtool's behavior on FreeBSD
746e36b141 Merge bitcoin-core/secp256k1#1678: cmake: add a helper for linking into static libs
a28c2ffa5c Merge bitcoin-core/secp256k1#1683: README: add link to musig example
2a9d374735 Merge bitcoin-core/secp256k1#1690: ci: Bump GCC snapshot major version to 16
add146e101 ci: Bump GCC snapshot major version to 16
004f57fcd8 ci: Move Valgrind build for `arm64` from Cirrus to GHA
5fafdfc30f ci: Move `gcc-snapshot` build for `arm64` from Cirrus to GHA
e814b79a8b ci: Switch `arm64_debian` from QEMU to native `arm64` Docker image
bcf77346b9 ci: Add `arm64` architecture to `docker_cache` job
b77aae9226 ci: Rename Docker image tag to reflect architecture
145ae3e28d cmake: add a helper for linking into static libs
819210974b README: add link to musig example, generalize module enabling hint
95db29b144 Merge bitcoin-core/secp256k1#1679: cmake: Use `PUBLIC_HEADER` target property in installation logic
37dd422b5c cmake: Emulate Libtool's behavior on FreeBSD
f24b838bed Merge bitcoin-core/secp256k1#1680: doc: Promote "Building with CMake" to standard procedure
3f31ac43e0 doc: Promote "Building with CMake" to standard procedure
6f67151ee2 cmake: Use `PUBLIC_HEADER` target property
c32715b2a0 cmake, move-only: Move module option processing to `src/CMakeLists.txt`
201b2b8f06 Merge bitcoin-core/secp256k1#1675: cmake: Bump minimum required CMake version to 3.22
3af71987a8 cmake: Bump minimum required CMake version to 3.22
92394476e9 Merge bitcoin-core/secp256k1#1673: Assert field magnitude at control-flow join
3a4f448cb4 Assert field magnitude at control-flow join
9fab425256 Merge bitcoin-core/secp256k1#1668: bench_ecmult: add benchmark for ecmult_const_xonly
05445377f4 bench_ecmult: add benchmark for ecmult_const_xonly
bb597b3d39 Merge bitcoin-core/secp256k1#1670: tests: update wycheproof files
d73ed99479 tests: update wycheproof files

git-subtree-dir: src/secp256k1
git-subtree-split: b9313c6e1a6082a66b4c75777e18ca4b176fcf9d
josibake added a commit to josibake/bitcoin that referenced this pull request Jul 22, 2025
b8b396c536 poc: use bindgen friendly api args
e35bedeca6 docs: update README
92bfe6ecfe ci: enable silentpayments module
0360ec6d69 tests: add constant time tests
6f2ee94073 tests: add BIP-352 test vectors
5395317d5e silentpayments: add benchmarks for scanning
4a4db17ef0 silentpayments: add examples/silentpayments.c
ccffc62eef silentpayments: receiving
bcca09bb5a silentpayments: recipient label support
896e0af2f8 silentpayments: sending
7cedb6cd5d build: add skeleton for new silentpayments (BIP352) module
b9313c6e1a Merge bitcoin-core/secp256k1#1708: release cleanup: bump version after 0.7.0
a660a4976e Merge bitcoin-core/secp256k1#1707: release: Prepare for 0.7.0
7ab8b0cc01 release cleanup: bump version after 0.7.0
a3e742d947 release: Prepare for 0.7.0
f67b0ac1a0 ci: Don't hardcode ABI version
020ee60495 Merge bitcoin-core/secp256k1#1706: musig/tests: initialize keypair
cde4130898 musig/tests: initialize keypair
6037833c9e Merge bitcoin-core/secp256k1#1702: changelog: update
40b4a06520 changelog: update
5e74086dc8 Merge bitcoin-core/secp256k1#1705: musig/test: Remove dead code
7c3380423c Merge bitcoin-core/secp256k1#1696: build: Refactor visibility logic and add override
8d967a602b musig/test: Remove dead code
983711cd6d musig/tests: Refactor vectors_signverify
73a695958a Merge bitcoin-core/secp256k1#1704: cmake: Make `secp256k1_objs` inherit interface defines from `secp256k1`
bf082221ff cmake: Make `secp256k1_objs` inherit interface defines from `secp256k1`
c82d84bb86 build: add CMake option for disabling symbol visibility attributes
ce7923874f build: Add SECP256K1_NO_API_VISIBILITY_ATTRIBUTES
e5297f6d79 build: Refactor visibility logic
cbbbf3bd6e Merge bitcoin-core/secp256k1#1699: ci: enable musig module for native macOS arm64 job
943479a7a3 Merge bitcoin-core/secp256k1#1694: Revert "cmake: configure libsecp256k1.pc during install"
3352f9d667 ci: enable musig module for native macOS arm64 job
ad60ef7ea7 Merge bitcoin-core/secp256k1#1689: ci: Convert `arm64` Cirrus tasks to GHA jobs
c498779096 Merge bitcoin-core/secp256k1#1687: cmake: support the use of launchers in ctest -S scripts
44b205e9ee Revert "cmake: configure libsecp256k1.pc during install"
0dfe387dbe cmake: support the use of launchers in ctest -S scripts
89096c234d Merge bitcoin-core/secp256k1#1692: cmake: configure libsecp256k1.pc during install
7106dce6fd cmake: configure libsecp256k1.pc during install
29e73f4ba5 Merge bitcoin-core/secp256k1#1685: cmake: Emulate Libtool's behavior on FreeBSD
746e36b141 Merge bitcoin-core/secp256k1#1678: cmake: add a helper for linking into static libs
a28c2ffa5c Merge bitcoin-core/secp256k1#1683: README: add link to musig example
2a9d374735 Merge bitcoin-core/secp256k1#1690: ci: Bump GCC snapshot major version to 16
add146e101 ci: Bump GCC snapshot major version to 16
004f57fcd8 ci: Move Valgrind build for `arm64` from Cirrus to GHA
5fafdfc30f ci: Move `gcc-snapshot` build for `arm64` from Cirrus to GHA
e814b79a8b ci: Switch `arm64_debian` from QEMU to native `arm64` Docker image
bcf77346b9 ci: Add `arm64` architecture to `docker_cache` job
b77aae9226 ci: Rename Docker image tag to reflect architecture
145ae3e28d cmake: add a helper for linking into static libs
819210974b README: add link to musig example, generalize module enabling hint
95db29b144 Merge bitcoin-core/secp256k1#1679: cmake: Use `PUBLIC_HEADER` target property in installation logic
37dd422b5c cmake: Emulate Libtool's behavior on FreeBSD
f24b838bed Merge bitcoin-core/secp256k1#1680: doc: Promote "Building with CMake" to standard procedure
3f31ac43e0 doc: Promote "Building with CMake" to standard procedure
6f67151ee2 cmake: Use `PUBLIC_HEADER` target property
c32715b2a0 cmake, move-only: Move module option processing to `src/CMakeLists.txt`
201b2b8f06 Merge bitcoin-core/secp256k1#1675: cmake: Bump minimum required CMake version to 3.22
3af71987a8 cmake: Bump minimum required CMake version to 3.22
92394476e9 Merge bitcoin-core/secp256k1#1673: Assert field magnitude at control-flow join
3a4f448cb4 Assert field magnitude at control-flow join
9fab425256 Merge bitcoin-core/secp256k1#1668: bench_ecmult: add benchmark for ecmult_const_xonly
05445377f4 bench_ecmult: add benchmark for ecmult_const_xonly
bb597b3d39 Merge bitcoin-core/secp256k1#1670: tests: update wycheproof files
d73ed99479 tests: update wycheproof files

git-subtree-dir: src/secp256k1
git-subtree-split: b8b396c536c05bdebf1bd8fbfc15a4a051f074b7
fjahr added a commit to fjahr/bitcoin that referenced this pull request Jul 24, 2025
410abb205a batch: Generate speedup graphs
e5df505bad batch, extrakeys: Add benchmarks
642901f57a batch: Add tests for batch_add_* APIs
6378b6bcdc batch,ecmult: Add tests for core batch APIs and strauss_batch refactor
e5bbca63bf batch: Add example
f818fc0e4b batch: Add batch_add_* APIs
b47d8f3877 batch, ecmult: Add batch_verify and refactor strauss_batch
535a94b6d2 batch: Add create and destroy APIs
800233a2d4 batch: Initialize an experimental batch module
REVERT: b9313c6e1a Merge bitcoin-core/secp256k1#1708: release cleanup: bump version after 0.7.0
REVERT: a660a4976e Merge bitcoin-core/secp256k1#1707: release: Prepare for 0.7.0
REVERT: 7ab8b0cc01 release cleanup: bump version after 0.7.0
REVERT: a3e742d947 release: Prepare for 0.7.0
REVERT: f67b0ac1a0 ci: Don't hardcode ABI version
REVERT: 020ee60495 Merge bitcoin-core/secp256k1#1706: musig/tests: initialize keypair
REVERT: cde4130898 musig/tests: initialize keypair
REVERT: 6037833c9e Merge bitcoin-core/secp256k1#1702: changelog: update
REVERT: 40b4a06520 changelog: update
REVERT: 5e74086dc8 Merge bitcoin-core/secp256k1#1705: musig/test: Remove dead code
REVERT: 7c3380423c Merge bitcoin-core/secp256k1#1696: build: Refactor visibility logic and add override
REVERT: 8d967a602b musig/test: Remove dead code
REVERT: 983711cd6d musig/tests: Refactor vectors_signverify
REVERT: 73a695958a Merge bitcoin-core/secp256k1#1704: cmake: Make `secp256k1_objs` inherit interface defines from `secp256k1`
REVERT: bf082221ff cmake: Make `secp256k1_objs` inherit interface defines from `secp256k1`
REVERT: c82d84bb86 build: add CMake option for disabling symbol visibility attributes
REVERT: ce7923874f build: Add SECP256K1_NO_API_VISIBILITY_ATTRIBUTES
REVERT: e5297f6d79 build: Refactor visibility logic
REVERT: cbbbf3bd6e Merge bitcoin-core/secp256k1#1699: ci: enable musig module for native macOS arm64 job
REVERT: 943479a7a3 Merge bitcoin-core/secp256k1#1694: Revert "cmake: configure libsecp256k1.pc during install"
REVERT: 3352f9d667 ci: enable musig module for native macOS arm64 job
REVERT: ad60ef7ea7 Merge bitcoin-core/secp256k1#1689: ci: Convert `arm64` Cirrus tasks to GHA jobs
REVERT: c498779096 Merge bitcoin-core/secp256k1#1687: cmake: support the use of launchers in ctest -S scripts
REVERT: 44b205e9ee Revert "cmake: configure libsecp256k1.pc during install"
REVERT: 0dfe387dbe cmake: support the use of launchers in ctest -S scripts
REVERT: 89096c234d Merge bitcoin-core/secp256k1#1692: cmake: configure libsecp256k1.pc during install
REVERT: 7106dce6fd cmake: configure libsecp256k1.pc during install
REVERT: 004f57fcd8 ci: Move Valgrind build for `arm64` from Cirrus to GHA
REVERT: 5fafdfc30f ci: Move `gcc-snapshot` build for `arm64` from Cirrus to GHA
REVERT: e814b79a8b ci: Switch `arm64_debian` from QEMU to native `arm64` Docker image
REVERT: bcf77346b9 ci: Add `arm64` architecture to `docker_cache` job
REVERT: b77aae9226 ci: Rename Docker image tag to reflect architecture

git-subtree-dir: src/secp256k1
git-subtree-split: 410abb205a93b5c84a00a4e9e478c852b6dc6d69
saikiran57 pushed a commit to saikiran57/bitcoin that referenced this pull request Jul 28, 2025
b9313c6e1a Merge bitcoin-core/secp256k1#1708: release cleanup: bump version after 0.7.0
a660a4976e Merge bitcoin-core/secp256k1#1707: release: Prepare for 0.7.0
7ab8b0cc01 release cleanup: bump version after 0.7.0
a3e742d947 release: Prepare for 0.7.0
f67b0ac1a0 ci: Don't hardcode ABI version
020ee60495 Merge bitcoin-core/secp256k1#1706: musig/tests: initialize keypair
cde4130898 musig/tests: initialize keypair
6037833c9e Merge bitcoin-core/secp256k1#1702: changelog: update
40b4a06520 changelog: update
5e74086dc8 Merge bitcoin-core/secp256k1#1705: musig/test: Remove dead code
7c3380423c Merge bitcoin-core/secp256k1#1696: build: Refactor visibility logic and add override
8d967a602b musig/test: Remove dead code
983711cd6d musig/tests: Refactor vectors_signverify
73a695958a Merge bitcoin-core/secp256k1#1704: cmake: Make `secp256k1_objs` inherit interface defines from `secp256k1`
bf082221ff cmake: Make `secp256k1_objs` inherit interface defines from `secp256k1`
c82d84bb86 build: add CMake option for disabling symbol visibility attributes
ce7923874f build: Add SECP256K1_NO_API_VISIBILITY_ATTRIBUTES
e5297f6d79 build: Refactor visibility logic
cbbbf3bd6e Merge bitcoin-core/secp256k1#1699: ci: enable musig module for native macOS arm64 job
943479a7a3 Merge bitcoin-core/secp256k1#1694: Revert "cmake: configure libsecp256k1.pc during install"
3352f9d667 ci: enable musig module for native macOS arm64 job
ad60ef7ea7 Merge bitcoin-core/secp256k1#1689: ci: Convert `arm64` Cirrus tasks to GHA jobs
c498779096 Merge bitcoin-core/secp256k1#1687: cmake: support the use of launchers in ctest -S scripts
44b205e9ee Revert "cmake: configure libsecp256k1.pc during install"
0dfe387dbe cmake: support the use of launchers in ctest -S scripts
89096c234d Merge bitcoin-core/secp256k1#1692: cmake: configure libsecp256k1.pc during install
7106dce6fd cmake: configure libsecp256k1.pc during install
29e73f4ba5 Merge bitcoin-core/secp256k1#1685: cmake: Emulate Libtool's behavior on FreeBSD
746e36b141 Merge bitcoin-core/secp256k1#1678: cmake: add a helper for linking into static libs
a28c2ffa5c Merge bitcoin-core/secp256k1#1683: README: add link to musig example
2a9d374735 Merge bitcoin-core/secp256k1#1690: ci: Bump GCC snapshot major version to 16
add146e101 ci: Bump GCC snapshot major version to 16
004f57fcd8 ci: Move Valgrind build for `arm64` from Cirrus to GHA
5fafdfc30f ci: Move `gcc-snapshot` build for `arm64` from Cirrus to GHA
e814b79a8b ci: Switch `arm64_debian` from QEMU to native `arm64` Docker image
bcf77346b9 ci: Add `arm64` architecture to `docker_cache` job
b77aae9226 ci: Rename Docker image tag to reflect architecture
145ae3e28d cmake: add a helper for linking into static libs
819210974b README: add link to musig example, generalize module enabling hint
95db29b144 Merge bitcoin-core/secp256k1#1679: cmake: Use `PUBLIC_HEADER` target property in installation logic
37dd422b5c cmake: Emulate Libtool's behavior on FreeBSD
f24b838bed Merge bitcoin-core/secp256k1#1680: doc: Promote "Building with CMake" to standard procedure
3f31ac43e0 doc: Promote "Building with CMake" to standard procedure
6f67151ee2 cmake: Use `PUBLIC_HEADER` target property
c32715b2a0 cmake, move-only: Move module option processing to `src/CMakeLists.txt`
201b2b8f06 Merge bitcoin-core/secp256k1#1675: cmake: Bump minimum required CMake version to 3.22
3af71987a8 cmake: Bump minimum required CMake version to 3.22
92394476e9 Merge bitcoin-core/secp256k1#1673: Assert field magnitude at control-flow join
3a4f448cb4 Assert field magnitude at control-flow join
9fab425256 Merge bitcoin-core/secp256k1#1668: bench_ecmult: add benchmark for ecmult_const_xonly
05445377f4 bench_ecmult: add benchmark for ecmult_const_xonly
bb597b3d39 Merge bitcoin-core/secp256k1#1670: tests: update wycheproof files
d73ed99479 tests: update wycheproof files

git-subtree-dir: src/secp256k1
git-subtree-split: b9313c6e1a6082a66b4c75777e18ca4b176fcf9d
josibake added a commit to josibake/bitcoin that referenced this pull request Aug 4, 2025
9e85256bbe docs: update README
4b1fb2c186 ci: enable silentpayments module
de508a78ac tests: add constant time tests
45427dd4d7 tests: add BIP-352 test vectors
6975614517 silentpayments: add benchmarks for scanning
a9af9ebf35 silentpayments: add examples/silentpayments.c
b06254b6c7 silentpayments: receiving
3c9362dd6a silentpayments: recipient label support
70e20b7145 silentpayments: sending
cf44324b5e build: add skeleton for new silentpayments (BIP352) module
REVERT: b9313c6e1a Merge bitcoin-core/secp256k1#1708: release cleanup: bump version after 0.7.0
REVERT: a660a4976e Merge bitcoin-core/secp256k1#1707: release: Prepare for 0.7.0
REVERT: 7ab8b0cc01 release cleanup: bump version after 0.7.0
REVERT: a3e742d947 release: Prepare for 0.7.0
REVERT: f67b0ac1a0 ci: Don't hardcode ABI version
REVERT: 020ee60495 Merge bitcoin-core/secp256k1#1706: musig/tests: initialize keypair
REVERT: cde4130898 musig/tests: initialize keypair
REVERT: 6037833c9e Merge bitcoin-core/secp256k1#1702: changelog: update
REVERT: 40b4a06520 changelog: update
REVERT: 5e74086dc8 Merge bitcoin-core/secp256k1#1705: musig/test: Remove dead code
REVERT: 7c3380423c Merge bitcoin-core/secp256k1#1696: build: Refactor visibility logic and add override
REVERT: 8d967a602b musig/test: Remove dead code
REVERT: 983711cd6d musig/tests: Refactor vectors_signverify
REVERT: 73a695958a Merge bitcoin-core/secp256k1#1704: cmake: Make `secp256k1_objs` inherit interface defines from `secp256k1`
REVERT: bf082221ff cmake: Make `secp256k1_objs` inherit interface defines from `secp256k1`
REVERT: c82d84bb86 build: add CMake option for disabling symbol visibility attributes
REVERT: ce7923874f build: Add SECP256K1_NO_API_VISIBILITY_ATTRIBUTES
REVERT: e5297f6d79 build: Refactor visibility logic
REVERT: cbbbf3bd6e Merge bitcoin-core/secp256k1#1699: ci: enable musig module for native macOS arm64 job
REVERT: 943479a7a3 Merge bitcoin-core/secp256k1#1694: Revert "cmake: configure libsecp256k1.pc during install"
REVERT: 3352f9d667 ci: enable musig module for native macOS arm64 job
REVERT: 44b205e9ee Revert "cmake: configure libsecp256k1.pc during install"

git-subtree-dir: src/secp256k1
git-subtree-split: 9e85256bbe527bf084222ee08dade9ea497d5c99
macgyver13 pushed a commit to macgyver13/bitcoin that referenced this pull request Aug 13, 2025
9e85256bbe docs: update README
4b1fb2c186 ci: enable silentpayments module
de508a78ac tests: add constant time tests
45427dd4d7 tests: add BIP-352 test vectors
6975614517 silentpayments: add benchmarks for scanning
a9af9ebf35 silentpayments: add examples/silentpayments.c
b06254b6c7 silentpayments: receiving
3c9362dd6a silentpayments: recipient label support
70e20b7145 silentpayments: sending
cf44324b5e build: add skeleton for new silentpayments (BIP352) module
REVERT: b9313c6e1a Merge bitcoin-core/secp256k1#1708: release cleanup: bump version after 0.7.0
REVERT: a660a4976e Merge bitcoin-core/secp256k1#1707: release: Prepare for 0.7.0
REVERT: 7ab8b0cc01 release cleanup: bump version after 0.7.0
REVERT: a3e742d947 release: Prepare for 0.7.0
REVERT: f67b0ac1a0 ci: Don't hardcode ABI version
REVERT: 020ee60495 Merge bitcoin-core/secp256k1#1706: musig/tests: initialize keypair
REVERT: cde4130898 musig/tests: initialize keypair
REVERT: 6037833c9e Merge bitcoin-core/secp256k1#1702: changelog: update
REVERT: 40b4a06520 changelog: update
REVERT: 5e74086dc8 Merge bitcoin-core/secp256k1#1705: musig/test: Remove dead code
REVERT: 7c3380423c Merge bitcoin-core/secp256k1#1696: build: Refactor visibility logic and add override
REVERT: 8d967a602b musig/test: Remove dead code
REVERT: 983711cd6d musig/tests: Refactor vectors_signverify
REVERT: 73a695958a Merge bitcoin-core/secp256k1#1704: cmake: Make `secp256k1_objs` inherit interface defines from `secp256k1`
REVERT: bf082221ff cmake: Make `secp256k1_objs` inherit interface defines from `secp256k1`
REVERT: c82d84bb86 build: add CMake option for disabling symbol visibility attributes
REVERT: ce7923874f build: Add SECP256K1_NO_API_VISIBILITY_ATTRIBUTES
REVERT: e5297f6d79 build: Refactor visibility logic
REVERT: cbbbf3bd6e Merge bitcoin-core/secp256k1#1699: ci: enable musig module for native macOS arm64 job
REVERT: 943479a7a3 Merge bitcoin-core/secp256k1#1694: Revert "cmake: configure libsecp256k1.pc during install"
REVERT: 3352f9d667 ci: enable musig module for native macOS arm64 job
REVERT: 44b205e9ee Revert "cmake: configure libsecp256k1.pc during install"

git-subtree-dir: src/secp256k1
git-subtree-split: 9e85256bbe527bf084222ee08dade9ea497d5c99
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants