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