Inside Bitcoin
Opening the selected file…
Opening the selected file…
The code behind the network, with room to understand it.
Release published 2026-10-28 · Snapshot fetched 2026-11-01. Latest stable release at fetch time; development branches and Git history are excluded. Only the selected code window and visible folders load here.
1# Copyright (c) 2023-present The Bitcoin Core developers2# Distributed under the MIT software license, see the accompanying3# file COPYING or https://opensource.org/license/mit/.5include(CheckSourceCompilesWithFlags)7# Check for clmul instructions support.8if(MSVC)9set(CLMUL_CXXFLAGS "")10else()11set(CLMUL_CXXFLAGS -mpclmul)12endif()13check_cxx_source_compiles_with_flags("14#include <immintrin.h>15#include <cstdint>17int main()18{19__m128i a = _mm_cvtsi64_si128((uint64_t)7);20__m128i b = _mm_clmulepi64_si128(a, a, 37);21__m128i c = _mm_srli_epi64(b, 41);22__m128i d = _mm_xor_si128(b, c);23uint64_t e = _mm_cvtsi128_si64(d);24return e == 0;25}26" HAVE_CLMUL27CXXFLAGS ${CLMUL_CXXFLAGS}28)30add_library(minisketch_common INTERFACE)31if(MSVC)32target_compile_options(minisketch_common INTERFACE33/wd406034/wd406535/wd414636/wd424437/wd426738)39endif()41add_library(minisketch STATIC EXCLUDE_FROM_ALL42${PROJECT_SOURCE_DIR}/src/minisketch/src/minisketch.cpp43${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/generic_1byte.cpp44${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/generic_2bytes.cpp45${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/generic_3bytes.cpp46${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/generic_4bytes.cpp47${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/generic_5bytes.cpp48${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/generic_6bytes.cpp49${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/generic_7bytes.cpp50${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/generic_8bytes.cpp51)53target_compile_definitions(minisketch54PRIVATE55DISABLE_DEFAULT_FIELDS56ENABLE_FIELD_3257)59target_include_directories(minisketch60PUBLIC61$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src/minisketch/include>62)64target_link_libraries(minisketch65PRIVATE66core_interface67minisketch_common68)70set_target_properties(minisketch PROPERTIES71EXPORT_COMPILE_COMMANDS OFF72)74if(HAVE_CLMUL)75set(_minisketch_clmul_src76${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_1byte.cpp77${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_2bytes.cpp78${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_3bytes.cpp79${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_4bytes.cpp80${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_5bytes.cpp81${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_6bytes.cpp82${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_7bytes.cpp83${PROJECT_SOURCE_DIR}/src/minisketch/src/fields/clmul_8bytes.cpp84)85target_sources(minisketch PRIVATE ${_minisketch_clmul_src})86set_property(SOURCE ${_minisketch_clmul_src} PROPERTY COMPILE_OPTIONS ${CLMUL_CXXFLAGS})87target_compile_definitions(minisketch PRIVATE HAVE_CLMUL)88unset(_minisketch_clmul_src)89endif()
Independent explanations by MyBitcoinExplorer. Not affiliated with or endorsed by Bitcoin Core. Guides are educational and do not replace the source or its tests.
Bitcoin Core source © its contributors, distributed under the MIT license. Original notices and bundled third-party licenses are retained in the source tree.