Closed
Description
Issues that have been (re)discovered in #1113 but have not been addressed there:
Affecting both build systems:
- Unified docs for configuration autotools/CMake/manual builds (build: Add CMake-based build system #1113 (comment) and Add section on configuration flags to README #1142); WIP -- doc: Add unified docs for configuration autotools/CMake/manual builds #1372
- Improve MSVC warning options (build: Add CMake-based build system #1113 (comment)); solved by build: Bump MSVC warning level up to W3 #1328
- Consider changing
DLL_EXPORT
TOSECP256k1_DLL_EXPORT
(build: Add CMake-based build system #1113 (comment)); solved by build: Improvements to symbol visibility logic on Windows (attempt 3) #1367 Consider setting CMake's default of /MD for MSVC also in autotools builds. Perhaps makeSee build: Meta-issue for follow-ups to initial CMake merge (#1113) #1235 (comment) and build: Meta-issue for follow-ups to initial CMake merge (#1113) #1235 (comment)CMAKE_MSVC_RUNTIME_LIBRARY
a CMake cache variable. (build: Add CMake-based build system #1113 (comment))- Print out a warning in the tests if both
VERIFY
andCOVERAGE
are defined. For clarity, this should be done in the C source, not in the build system. (build: Add CMake-based build system #1113 (comment)); solved by test: Warn if bothVERIFY
andCOVERAGE
are defined #1333 - Actually check if ARM assembly is supported (build: Add CMake-based build system #1113 (comment) and also tracked in build: Rename arm to arm32 and check if it's really supported #1034); solved by build: Rename arm to arm32 and check if it's really supported #1304
SetSee build: Meta-issue for follow-ups to initial CMake merge (#1113) #1235 (comment).-fvisibility-inlines-hidden
? (build: Add CMake-based build system #1113 (comment)).Consider dropping support for Valgrind on MacOS (build: Add CMake-based build system #1113 (comment)).See build: Meta-issue for follow-ups to initial CMake merge (#1113) #1235 (comment).
Affecting only CMake:
- Changelog entry (build: Add CMake-based build system #1113 (comment); solved by changelog: Add entry for CMake #1225)
- Add CMake instructions to release process (solved by Add CMake instructions to release process #1226)
- Compute string
secp256k1
(e.g., intarget_link_libraries
) as substring ofPROJECT_NAME
. That will help with distinguishing forks. (cmake: Rename project to "libsecp256k1" #1229 (comment)). - Consider recommending CMake-native build commands in the README (build: Add CMake-based build system #1113 (comment), solved by cmake: Recommend native CMake commands in README #1483)
- Use
GENERATOR_IS_MULTI_CONFIG
in the future, which requires CMake 3.9. (build: Add CMake-based build system #1113 (comment); solved by cmake: Bugfix and other improvements after bumping CMake up to 3.13 #1239) - See if we can use CMake templates to have something similar to
--enable-dev-mode
. (build: Add CMake-based build system #1113 (comment); solved by cmake: Add dev-mode #1234) - Consider dropping support for building static and shared libraries at the same time (build: Add CMake-based build system #1113 (comment)) or alternatively, enable position-independent code globally (build: Add CMake-based build system #1113 (comment); solved by Build: allow static or shared but not both #1230)
-
configure_package_config_file(... COMPATIBILITY
isSameMajorVersion
but should probably beSameMinorVersion
before 1.0.0 according to our SemVer interpretation. But the latter requires CMake 3.11. (https://gnusha.org/secp256k1/2023-03-08.log; solved by cmake: Bugfix and other improvements after bumping CMake up to 3.13 #1239) make check
should run tests in parallel, likectest -j
(https://gnusha.org/secp256k1/2023-03-08.log; WIP in by cmake: Emulate GNU Autotools 'make check -jN' #1294Consider usingSee build: Meta-issue for follow-ups to initial CMake merge (#1113) #1235 (comment)COMPILE_FLAGS
orCOMPILE_OPTIONS
to add CFLAGS.COMPILE_OPTIONS
requires CMake 3.11, while we currently target CMake 3.1 (build: Add CMake-based build system #1113 (comment))Consider CMAKE_COMPILE_WARNING_AS_ERROR for CMake 3.24+ (build: ImproveSee build: Meta-issue for follow-ups to initial CMake merge (#1113) #1235 (comment)SECP_TRY_APPEND_DEFAULT_CFLAGS
macro #1241 (comment))- Make
SECP256K1_INSTALL
default toPROJECT_IS_TOP_LEVEL
on CMake 3.21+ (cmake: Make installation optional #1263); solved by cmake: Some improvements usingPROJECT_IS_TOP_LEVEL
variable #1284