From 7b18c06d2fbd07b030f2f70c9128dd3e19875b1e Mon Sep 17 00:00:00 2001 From: Snider Date: Thu, 25 Sep 2025 17:55:34 +0100 Subject: [PATCH] Refactor genesis and premine wallet config to separate file Moved genesis block and premine wallet generation logic from src/CMakeLists.txt to a new cmake/ChainConfig.cmake file. This improves modularity and keeps the main CMakeLists.txt cleaner by isolating chain configuration options and related commands. --- cmake/ChainConfig.cmake | 64 +++++++++++++++++++++++++++++++++++++++++ src/CMakeLists.txt | 64 +---------------------------------------- 2 files changed, 65 insertions(+), 63 deletions(-) create mode 100644 cmake/ChainConfig.cmake diff --git a/cmake/ChainConfig.cmake b/cmake/ChainConfig.cmake new file mode 100644 index 00000000..ac24b9c2 --- /dev/null +++ b/cmake/ChainConfig.cmake @@ -0,0 +1,64 @@ + + +include_directories (${CMAKE_BINARY_DIR}/src ${CMAKE_BINARY_DIR}/src/currency_core) +include(${CMAKE_SOURCE_DIR}/cmake/config-vars.cmake) +include(${CMAKE_SOURCE_DIR}/cmake/currency_configs/example.cmake) +include(${CMAKE_SOURCE_DIR}/cmake/check-config-vars.cmake) +configure_file("currency_core/currency_config.h.in" "currency_core/currency_config.h") + +# CAUTION - wallet generation will only work properly in UNIX line environment +set(GENERATE_FRESH_GENESIS OFF CACHE BOOL "Generate new genesis block") + +set(GENESIS_PREMINE_ADDRESS "" CACHE STRING "Premine wallet address") +set(GENESIS_PROOF "" CACHE STRING "Genesis proof string") + +set(GENERATE_PREMINE_WALLET OFF CACHE BOOL "Generate premine wallet") +set(PREMINE_WALLET_PASSWORD "" CACHE STRING "Premine wallet password") + +if (GENERATE_PREMINE_WALLET AND GENERATE_FRESH_GENESIS) + message(FATAL_ERROR "Genesis can be generatet together with premine wallet") +endif() + +if (GENERATE_PREMINE_WALLET) + unset(GENERATE_PREMINE_WALLET CACHE) + message(WARNING "Generating premine wallet") + + if (NOT DEFINED PREMINE_WALLET_PASSWORD OR PREMINE_WALLET_PASSWORD STREQUAL "") + message(FATAL_ERROR "set PREMINE_WALLET_PASSWORD or GENESIS_PREMINE_ADDRESS to generate genesis block") + endif() + + # Make wallet directory + add_custom_target( + premine_wallet + "${CMAKE_COMMAND}" -E make_directory "${CMAKE_SOURCE_DIR}/premine_wallet" + COMMENT "Creating premine wallet directory" + ) + + # Generate wallet + add_custom_command(TARGET premine_wallet POST_BUILD + COMMAND echo ${PREMINE_WALLET_PASSWORD} | ${CMAKE_BINARY_DIR}/src/simplewallet --generate-new-wallet ${CMAKE_SOURCE_DIR}/premine_wallet/premine_wallet + COMMENT "Generating premine wallet in ${CMAKE_SOURCE_DIR}/premine_wallet" + ) + + add_dependencies(premine_wallet simplewallet) +endif() + +if (GENERATE_FRESH_GENESIS) + unset(GENERATE_FRESH_GENESIS CACHE) + add_executable(genesis_generator ${GENESIS_GENERATOR}) + target_link_libraries(genesis_generator currency_core crypto common zlibstatic ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES} OpenSSL::SSL OpenSSL::Crypto) + + if (NOT DEFINED GENESIS_PREMINE_ADDRESS OR GENESIS_PREMINE_ADDRESS STREQUAL "") + message(WARNING "GENESIS_PREMINE_ADDRESS not set, loading from ${CMAKE_SOURCE_DIR}/premine_wallet/premine_wallet.address") + file(READ "${CMAKE_SOURCE_DIR}/premine_wallet/premine_wallet.address" GENESIS_PREMINE_ADDRESS) + if (NOT DEFINED GENESIS_PREMINE_ADDRESS OR GENESIS_PREMINE_ADDRESS STREQUAL "") + message(FATAL_ERROR "GENESIS_PREMINE_ADDRESS not set") + endif() + else() + add_custom_command(TARGET genesis_generator POST_BUILD + COMMAND ${CMAKE_BINARY_DIR}/src/genesis_generator --address ${GENESIS_PREMINE_ADDRESS} --proof ${GENESIS_PROOF} --output ${CMAKE_SOURCE_DIR}/src/currency_core/generated/ + COMMENT "Generating genesis data in ${CMAKE_SOURCE_DIR}/src/currency_core/" + ) + endif() + +endif() \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0a55cdf7..9e081b91 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -50,12 +50,7 @@ MACRO(ENABLE_SHARED_PCH_EXECUTABLE target) ENDMACRO(ENABLE_SHARED_PCH_EXECUTABLE) ##### End of Precompiled Headers macros ###### -include_directories (${CMAKE_BINARY_DIR}/src ${CMAKE_BINARY_DIR}/src/currency_core) -include(../cmake/config-vars.cmake) -include(../cmake/currency_configs/example.cmake) -include(../cmake/check-config-vars.cmake) -configure_file("currency_core/currency_config.h.in" "currency_core/currency_config.h") - +include(ChainConfig) file(GLOB_RECURSE PCH pch/*) file(GLOB_RECURSE COMMON common/*) @@ -162,63 +157,6 @@ ENABLE_SHARED_PCH(stratum STRATUM) target_link_libraries(currency_core lmdb mdbx) -# CAUTION - wallet generation will only work properly in UNIX line environment -set(GENERATE_FRESH_GENESIS OFF CACHE BOOL "Generate new genesis block") - -set(GENESIS_PREMINE_ADDRESS "" CACHE STRING "Premine wallet address") -set(GENESIS_PROOF "" CACHE STRING "Genesis proof string") - -set(GENERATE_PREMINE_WALLET OFF CACHE BOOL "Generate premine wallet") -set(PREMINE_WALLET_PASSWORD "" CACHE STRING "Premine wallet password") - -if (GENERATE_PREMINE_WALLET AND GENERATE_FRESH_GENESIS) - message(FATAL_ERROR "Genesis can be generatet together with premine wallet") -endif() - -if (GENERATE_PREMINE_WALLET) - unset(GENERATE_PREMINE_WALLET CACHE) - message(WARNING "Generating premine wallet") - - if (NOT DEFINED PREMINE_WALLET_PASSWORD OR PREMINE_WALLET_PASSWORD STREQUAL "") - message(FATAL_ERROR "set PREMINE_WALLET_PASSWORD or GENESIS_PREMINE_ADDRESS to generate genesis block") - endif() - - # Make wallet directory - add_custom_target( - premine_wallet - "${CMAKE_COMMAND}" -E make_directory "${CMAKE_SOURCE_DIR}/premine_wallet" - COMMENT "Creating premine wallet directory" - ) - - # Generate wallet - add_custom_command(TARGET premine_wallet POST_BUILD - COMMAND echo ${PREMINE_WALLET_PASSWORD} | ${CMAKE_BINARY_DIR}/src/simplewallet --generate-new-wallet ${CMAKE_SOURCE_DIR}/premine_wallet/premine_wallet - COMMENT "Generating premine wallet in ${CMAKE_SOURCE_DIR}/premine_wallet" - ) - - add_dependencies(premine_wallet simplewallet) -endif() - -if (GENERATE_FRESH_GENESIS) - unset(GENERATE_FRESH_GENESIS CACHE) - add_executable(genesis_generator ${GENESIS_GENERATOR}) - target_link_libraries(genesis_generator currency_core crypto common zlibstatic ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES} OpenSSL::SSL OpenSSL::Crypto) - - if (NOT DEFINED GENESIS_PREMINE_ADDRESS OR GENESIS_PREMINE_ADDRESS STREQUAL "") - message(WARNING "GENESIS_PREMINE_ADDRESS not set, loading from ${CMAKE_SOURCE_DIR}/premine_wallet/premine_wallet.address") - file(READ "${CMAKE_SOURCE_DIR}/premine_wallet/premine_wallet.address" GENESIS_PREMINE_ADDRESS) - if (NOT DEFINED GENESIS_PREMINE_ADDRESS OR GENESIS_PREMINE_ADDRESS STREQUAL "") - message(FATAL_ERROR "GENESIS_PREMINE_ADDRESS not set") - endif() - else() - add_custom_command(TARGET genesis_generator POST_BUILD - COMMAND ${CMAKE_BINARY_DIR}/src/genesis_generator --address ${GENESIS_PREMINE_ADDRESS} --proof ${GENESIS_PROOF} --output ${CMAKE_SOURCE_DIR}/src/currency_core/generated/ - COMMENT "Generating genesis data in ${CMAKE_SOURCE_DIR}/src/currency_core/" - ) - endif() - -endif() - add_executable(daemon ${DAEMON} ${P2P} ${CURRENCY_PROTOCOL}) add_dependencies(daemon version) target_link_libraries(daemon rpc stratum currency_core crypto common miniupnpc::miniupnpc ZLIB::ZLIB ethash ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES} OpenSSL::SSL OpenSSL::Crypto)