diff --git a/.gitignore b/.gitignore
index 497f8205..ea125ca8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,6 +34,9 @@ builds/gnu/.dirstamp
# pkg-config pc file from .pc.in
builds/gnu/*.pc
+# configured headers from in-tree configure
+builds/gnu/include
+
# msbuild/msvc
/.vs
*.db
diff --git a/builds/cmake/CMakeLists.txt b/builds/cmake/CMakeLists.txt
index 82e81bf7..0e45b5cc 100644
--- a/builds/cmake/CMakeLists.txt
+++ b/builds/cmake/CMakeLists.txt
@@ -11,7 +11,7 @@ find_package(Git QUIET)
set( GIT_COMMIT_HASH "unknown" )
set( GIT_COMMIT_HEIGHT 0 )
set( GIT_DIRTY 0 )
-set( GIT_ORIGIN_URL "https://github.com/libbitcoin/libbitcoin-node" )
+set( GIT_ORIGIN_URL "unknown" )
if ( GIT_EXECUTABLE )
execute_process(
@@ -21,6 +21,10 @@ if ( GIT_EXECUTABLE )
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET )
+ if ( NOT GIT_COMMIT_HASH )
+ set( GIT_COMMIT_HASH "unknown" )
+ endif()
+
execute_process(
COMMAND ${GIT_EXECUTABLE} rev-list --count HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
@@ -33,12 +37,16 @@ if ( GIT_EXECUTABLE )
endif()
execute_process(
- COMMAND ${GIT_EXECUTABLE} remote get-url origin
+ COMMAND ${GIT_EXECUTABLE} ls-remote --get-url
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_ORIGIN_URL
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET )
+ if ( NOT GIT_ORIGIN_URL MATCHES "://|@" )
+ set( GIT_ORIGIN_URL "unknown" )
+ endif()
+
execute_process(
COMMAND ${GIT_EXECUTABLE} status --porcelain
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
@@ -171,6 +179,15 @@ endif()
#------------------------------------------------------------------------------
include(CheckLinkerFlag)
+#------------------------------------------------------------------------------
+# Configurable file(s).
+#------------------------------------------------------------------------------
+
+configure_file(
+ ${CMAKE_CURRENT_SOURCE_DIR}/../../include/bitcoin/node/version.hpp.in
+ ${CMAKE_CURRENT_BINARY_DIR}/include/bitcoin/node/version.hpp
+ @ONLY )
+
#------------------------------------------------------------------------------
# libbitcoin-node library
#------------------------------------------------------------------------------
@@ -212,6 +229,10 @@ target_sources( libbitcoin-node
BASE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/../../include"
FILES
${libbitcoin_node_HEADERS}
+ FILE_SET HEADERS
+ BASE_DIRS "${CMAKE_CURRENT_BINARY_DIR}/include"
+ FILES
+ "${CMAKE_CURRENT_BINARY_DIR}/include/bitcoin/node/version.hpp"
PRIVATE
${libbitcoin_node_SOURCES}
)
diff --git a/builds/gnu/Makefile.am b/builds/gnu/Makefile.am
index 46e40dec..92ea4f36 100644
--- a/builds/gnu/Makefile.am
+++ b/builds/gnu/Makefile.am
@@ -37,6 +37,7 @@ lib_LTLIBRARIES = src/libbitcoin-node.la
src_libbitcoin_node_la_LIBS = src/libbitcoin-node.la
src_libbitcoin_node_la_CPPFLAGS = \
+ -I${top_builddir}/include \
-I${srcdir}/../../include \
${libbitcoin_database_BUILD_CPPFLAGS} \
${libbitcoin_network_BUILD_CPPFLAGS}
@@ -115,7 +116,8 @@ include_bitcoin_node_HEADERS = \
${srcdir}/../../include/bitcoin/node/events.hpp \
${srcdir}/../../include/bitcoin/node/full_node.hpp \
${srcdir}/../../include/bitcoin/node/settings.hpp \
- ${srcdir}/../../include/bitcoin/node/version.hpp
+ ${srcdir}/../../include/bitcoin/node/version.hpp \
+ include/bitcoin/node/version.hpp
include_bitcoin_node_channelsdir = \
${includedir}/bitcoin/node/channels
diff --git a/builds/gnu/configure.ac b/builds/gnu/configure.ac
index 6ce944d2..c838d66d 100644
--- a/builds/gnu/configure.ac
+++ b/builds/gnu/configure.ac
@@ -24,7 +24,7 @@ m4_define([_git_dirty],
m4_define([_GIT_DIRTY], m4_ifnblank(_git_dirty, [_git_dirty], [0]))
m4_define([_GIT_ORIGIN_URL],
- m4_dquote(m4_esyscmd_s([git remote get-url origin 2>/dev/null || echo https://github.com/libbitcoin/libbitcoin-node])))
+ m4_dquote(m4_esyscmd_s([git ls-remote --get-url 2>/dev/null | grep -e '://' -e '@' || echo unknown])))
m4_define([_LIBBITCOIN_VERSION_MAJOR], [4])
m4_define([_LIBBITCOIN_VERSION_MINOR], [0])
@@ -296,6 +296,7 @@ AS_IF([(test "x${with_tests}" != "xno")],
AC_CONFIG_FILES([
Makefile
libbitcoin-node.pc
+ include/bitcoin/node/version.hpp:${repository_root_dir}/include/bitcoin/node/version.hpp.in
])
AC_OUTPUT
diff --git a/builds/msvc/properties/Git.props b/builds/msvc/properties/Git.props
new file mode 100644
index 00000000..516becbd
--- /dev/null
+++ b/builds/msvc/properties/Git.props
@@ -0,0 +1,52 @@
+
+
+
+
+ <_PropertySheetDisplayName>Git Settings
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ unknown
+ 0
+ 1
+ 0
+ unknown
+ $(GitCommitHeight)
+
+
+
+ <_Configured>$([System.IO.File]::ReadAllText('%(ConfigurableFile.FullPath)'))
+ <_Configured>$(_Configured.Replace('@LIBBITCOIN_VERSION_MAJOR@', '$(VersionMajor)'))
+ <_Configured>$(_Configured.Replace('@LIBBITCOIN_VERSION_MINOR@', '$(VersionMinor)'))
+ <_Configured>$(_Configured.Replace('@LIBBITCOIN_VERSION_PATCH@', '$(VersionPatch)'))
+ <_Configured>$(_Configured.Replace('@GIT_COMMIT_HASH@', '$(GitCommitHash)'))
+ <_Configured>$(_Configured.Replace('@GIT_ORIGIN_URL@', '$(GitOriginUrl)'))
+ <_Configured>$(_Configured.Replace('@GIT_DIRTY@', '$(GitDirty)'))
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/builds/msvc/properties/Output.props b/builds/msvc/properties/Output.props
index 492876cf..deb3dba7 100644
--- a/builds/msvc/properties/Output.props
+++ b/builds/msvc/properties/Output.props
@@ -25,6 +25,7 @@
+
\ No newline at end of file
diff --git a/builds/msvc/vs2026/libbitcoin-database.import.props b/builds/msvc/vs2026/libbitcoin-database.import.props
index de00e1d2..cd2a9051 100644
--- a/builds/msvc/vs2026/libbitcoin-database.import.props
+++ b/builds/msvc/vs2026/libbitcoin-database.import.props
@@ -16,6 +16,7 @@
$(ProjectDir)..\..\..\..\..\libbitcoin-database\include\;%(AdditionalIncludeDirectories)
+ $(ProjectDir)..\..\..\..\..\libbitcoin-database\build\include\;%(AdditionalIncludeDirectories)
BCD_STATIC;%(PreprocessorDefinitions)
@@ -32,4 +33,4 @@
-
\ No newline at end of file
+
diff --git a/builds/msvc/vs2026/libbitcoin-network.import.props b/builds/msvc/vs2026/libbitcoin-network.import.props
index d2b892a1..d04ce592 100644
--- a/builds/msvc/vs2026/libbitcoin-network.import.props
+++ b/builds/msvc/vs2026/libbitcoin-network.import.props
@@ -28,6 +28,7 @@
$(ProjectDir)..\..\..\..\..\libbitcoin-network\include\;%(AdditionalIncludeDirectories)
+ $(ProjectDir)..\..\..\..\..\libbitcoin-network\build\include\;%(AdditionalIncludeDirectories)
$(ProjectDir)..\..\..\..\..\libbitcoin-network\include\bitcoin\network\ssl\;%(AdditionalIncludeDirectories)
@@ -59,4 +60,4 @@
-
\ No newline at end of file
+
diff --git a/builds/msvc/vs2026/libbitcoin-node.import.props b/builds/msvc/vs2026/libbitcoin-node.import.props
index 65d8b1c6..b71e6531 100644
--- a/builds/msvc/vs2026/libbitcoin-node.import.props
+++ b/builds/msvc/vs2026/libbitcoin-node.import.props
@@ -16,6 +16,7 @@
$(ProjectDir)..\..\..\..\..\libbitcoin-node\include\;%(AdditionalIncludeDirectories)
+ $(ProjectDir)..\..\..\..\..\libbitcoin-node\build\include\;%(AdditionalIncludeDirectories)
BCN_STATIC;%(PreprocessorDefinitions)
@@ -32,4 +33,4 @@
-
\ No newline at end of file
+
diff --git a/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.props b/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.props
index 10beb2d4..c0f53503 100644
--- a/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.props
+++ b/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.props
@@ -18,6 +18,7 @@
$(RepoRoot)include\;%(AdditionalIncludeDirectories)
+ $(RepoRoot)build\include\;%(AdditionalIncludeDirectories)
false
BCN_DLL;%(PreprocessorDefinitions)
BCN_STATIC;%(PreprocessorDefinitions)
diff --git a/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.vcxproj b/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.vcxproj
index c4141838..40bf2009 100644
--- a/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.vcxproj
+++ b/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.vcxproj
@@ -120,6 +120,16 @@
+
+ 4
+ 0
+
+
+
+ ..\..\..\..\build\include\bitcoin\node\version.hpp
+
+
+
@@ -167,7 +177,6 @@
-
@@ -223,10 +232,10 @@
+
-
diff --git a/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.vcxproj.filters b/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.vcxproj.filters
index ab9882c8..9d2e4de2 100644
--- a/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.vcxproj.filters
+++ b/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.vcxproj.filters
@@ -34,23 +34,20 @@
{5FFB5F52-0772-4404-0000-000000000008}
-
- {5FFB5F52-0772-4404-0000-000000000009}
-
- {5FFB5F52-0772-4404-0000-00000000000A}
+ {5FFB5F52-0772-4404-0000-000000000009}
- {5FFB5F52-0772-4404-0000-00000000000B}
+ {5FFB5F52-0772-4404-0000-00000000000A}
- {5FFB5F52-0772-4404-0000-00000000000C}
+ {5FFB5F52-0772-4404-0000-00000000000B}
- {5FFB5F52-0772-4404-0000-00000000000D}
+ {5FFB5F52-0772-4404-0000-00000000000C}
- {5FFB5F52-0772-4404-0000-00000000000E}
+ {5FFB5F52-0772-4404-0000-00000000000D}
@@ -188,9 +185,6 @@
-
- resource
-
include\bitcoin
@@ -348,18 +342,21 @@
include\bitcoin\node
+
+
+ include\bitcoin\node
+
+
include\bitcoin\node\impl\sessions
+
+ include\bitcoin\node
+
-
-
- resource
-
-
diff --git a/builds/msvc/vs2026/libbitcoin-system.import.props b/builds/msvc/vs2026/libbitcoin-system.import.props
index e0bfc247..6aaae20b 100644
--- a/builds/msvc/vs2026/libbitcoin-system.import.props
+++ b/builds/msvc/vs2026/libbitcoin-system.import.props
@@ -52,6 +52,8 @@
$(ProjectDir)..\..\..\..\..\libbitcoin-system\include\;%(AdditionalIncludeDirectories)
+ $(ProjectDir)..\..\..\..\..\libbitcoin-system\build\include\;%(AdditionalIncludeDirectories)
+
WIN32_LEAN_AND_MEAN;NOMINMAX;_WIN32_WINNT=0x0A00;%(PreprocessorDefinitions)
diff --git a/include/bitcoin/node/version.hpp.in b/include/bitcoin/node/version.hpp.in
new file mode 100644
index 00000000..2a8ddd8f
--- /dev/null
+++ b/include/bitcoin/node/version.hpp.in
@@ -0,0 +1,23 @@
+///////////////////////////////////////////////////////////////////////////////
+// Copyright (c) 2014-2026 libbitcoin-node developers (see COPYING).
+//
+// GENERATED SOURCE CODE, DO NOT EDIT EXCEPT EXPERIMENTALLY
+//
+///////////////////////////////////////////////////////////////////////////////
+#ifndef LIBBITCOIN_NODE_VERSION_HPP
+#define LIBBITCOIN_NODE_VERSION_HPP
+
+/**
+ * The semantic version of this repository as: [major].[minor].[patch]
+ * For interpretation of the versioning scheme see: http://semver.org
+ */
+
+#define LIBBITCOIN_NODE_VERSION "@LIBBITCOIN_VERSION_MAJOR@.@LIBBITCOIN_VERSION_MINOR@.@LIBBITCOIN_VERSION_PATCH@"
+#define LIBBITCOIN_NODE_MAJOR_VERSION @LIBBITCOIN_VERSION_MAJOR@
+#define LIBBITCOIN_NODE_MINOR_VERSION @LIBBITCOIN_VERSION_MINOR@
+#define LIBBITCOIN_NODE_PATCH_VERSION @LIBBITCOIN_VERSION_PATCH@
+#define LIBBITCOIN_NODE_COMMIT_HASH "@GIT_COMMIT_HASH@"
+#define LIBBITCOIN_NODE_REPOSITORY_URL "@GIT_ORIGIN_URL@"
+#define LIBBITCOIN_NODE_IS_DIRTY @GIT_DIRTY@
+
+#endif