Update build process, update primary include file

This commit is contained in:
Lee Clagett
2025-04-02 16:53:56 -04:00
parent f3d06bfe0e
commit 8057c4be54
6 changed files with 73 additions and 1536 deletions
+18 -184
View File
@@ -1,4 +1,4 @@
# Copyright (c) 2020, The Monero Project # Copyright (c) 2024-2025, The Monero Project
# #
# All rights reserved. # All rights reserved.
# #
@@ -27,198 +27,49 @@
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
cmake_minimum_required(VERSION 3.1.0) cmake_minimum_required(VERSION 3.1.0)
project(lws-frontend) project(lwsf)
enable_language(CXX) enable_language(CXX)
set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
option(BUILD_TESTS "Build Tests" OFF)
set(MONERO_LIBRARIES
daemon_messages
serialization
lmdb_lib
net
checkpoints
hardforks
cryptonote_core
cryptonote_basic
cryptonote_format_utils_basic
ringct
ringct_basic
mnemonics
multisig
blockchain_db
common
lmdb
device
device_trezor
cncrypto
randomx
epee
easylogging
version
unbound
wallet
wallet_api
)
set(MONERO_OPTIONAL unbound)
set(MONERO_SEARCH_PATHS
"/contrib/epee/src"
"/external/db_drivers/liblmdb"
"/external/easylogging++"
"/lib"
"/src"
"src/checkpoints"
"/src/crypto"
"/src/cryptonote_basic"
"/src/cryptonote_core"
"/src/device"
"/src/device_trezor"
"/src/hardforks"
"/src/lmdb"
"/src/ringct"
"/src/rpc"
"/src/wallet/api"
)
#
# Pull some information from monero build
#
# Needed due to "bug" in monero CMake - the `project` function is used twice!
if (NOT MONERO_SOURCE_DIR) if (NOT MONERO_SOURCE_DIR)
message(FATAL_ERROR "The argument -DMONERO_SOURCE_DIR must specify a location of a monero source tree") message(FATAL_ERROR "The argument -DMONERO_SOURCE_DIR must specify a location of a monero source tree")
endif() endif()
if (NOT MONERO_BUILD_DIR) include(FetchContent)
message(FATAL_ERROR "The argument -DMONERO_BUILD_DIR must specify a location of an existing monero build") FetchContent_Declare(monero SOURCE_DIR ${MONERO_SOURCE_DIR})
endif()
if(STATIC) if (NOT monero_POPULATED)
if(MSVC) FetchContent_MakeAvailable(monero)
set(CMAKE_FIND_LIBRARY_SUFFIXES .lib .dll.a .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) endif ()
else()
set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
endif()
endif()
load_cache(${MONERO_BUILD_DIR} READ_WITH_PREFIX monero_
Boost_THREAD_LIBRARY_RELEASE
CMAKE_CXX_COMPILER
EXTRA_LIBRARIES
LIBUDEV_LIBRARY
usb_LIBRARY
HIDAPI_INCLUDE_DIR
HIDAPI_LIBRARY
LMDB_INCLUDE
monero_SOURCE_DIR
OPENSSL_INCLUDE_DIR
OPENSSL_CRYPTO_LIBRARY
OPENSSL_SSL_LIBRARY
sodium_LIBRARY_RELEASE
UNBOUND_LIBRARIES
ZMQ_INCLUDE_PATH
ZMQ_LIB
PGM_LIBRARY
NORM_LIBRARY
GSSAPI_LIBRARY
PROTOLIB_LIBRARY
)
if (NOT (monero_monero_SOURCE_DIR MATCHES "${MONERO_SOURCE_DIR}(/src/cryptonote_protocol)"))
message(FATAL_ERROR "Invalid Monero source dir - does not appear to match source used for build directory")
endif()
if (NOT (CMAKE_CXX_COMPILER STREQUAL monero_CMAKE_CXX_COMPILER))
message(FATAL_ERROR "Compiler for monero build differs from this project")
endif()
if ("${monero_UNBOUND_LIBRARIES}" STREQUAL "UNBOUND_LIBRARIES-NOTFOUND")
unset(monero_UNBOUND_LIBRARIES)
endif()
if ("${monero_HIDAPI_LIBRARY}" STREQUAL "HIDAPI_LIBRARY-NOTFOUND")
unset(monero_HIDAPI_INCLUDE_DIR)
unset(monero_HIDAPI_LIBRARY)
endif()
# #
# Dependencies specific to monero-lws # Dependencies specific to lwsf
# #
set(THREADS_PREFER_PTHREAD_FLAG ON) set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED) find_package(Threads REQUIRED)
# boost
set(Boost_NO_BOOST_CMAKE ON) set(Boost_NO_BOOST_CMAKE ON)
if(STATIC) if(STATIC)
set(Boost_USE_STATIC_LIBS ON) set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_STATIC_RUNTIME ON) set(Boost_USE_STATIC_RUNTIME ON)
endif() endif()
find_package(Boost 1.58 QUIET REQUIRED COMPONENTS chrono filesystem program_options regex serialization system thread) find_package(Boost 1.66 QUIET REQUIRED COMPONENTS program_options thread)
if (NOT (Boost_THREAD_LIBRARY STREQUAL monero_Boost_THREAD_LIBRARY_RELEASE)) list(INSERT CMAKE_MODULE_PATH 0
message(STATUS "Found Boost_THREAD_LIBRARY: ${Boost_THREAD_LIBRARY}") "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
message(STATUS "Found monero_Boost_THREAD_LIBRARY_RELEASE: ${monero_Boost_THREAD_LIBRARY_RELEASE}")
message(FATAL_ERROR "Boost libraries for monero build differs from this project")
endif()
if(monero_PGM_LIBRARY) if(STATIC)
set(ZMQ_LIB "${ZMQ_LIB};${monero_PGM_LIBRARY}") set(sodium_USE_STATIC_LIBS ON)
endif()
if(monero_NORM_LIBRARY)
set(ZMQ_LIB "${ZMQ_LIB};${monero_NORM_LIBRARY}")
endif()
if(monero_GSSAPI_LIBRARY)
set(ZMQ_LIB "${ZMQ_LIB};${monero_GSSAPI_LIBRARY}")
endif()
if(monero_PROTOLIB_LIBRARY)
set(ZMQ_LIB "${ZMQ_LIB};${monero_PROTOLIB_LIBRARY}")
endif()
if(monero_sodium_LIBRARY_RELEASE)
set(ZMQ_LIB "${ZMQ_LIB};${monero_sodium_LIBRARY_RELEASE}")
endif()
if(STATIC AND NOT IOS)
if(UNIX)
set(monero_OPENSSL_LIBRARIES "${monero_OPENSSL_LIBRARIES};${CMAKE_DL_LIBS};${CMAKE_THREAD_LIBS_INIT}")
endif()
endif()
foreach (LIB ${MONERO_LIBRARIES})
find_library(LIB_PATH NAMES "${LIB}" PATHS ${MONERO_BUILD_DIR} PATH_SUFFIXES "/src/${LIB}" "external/${LIB}" ${MONERO_SEARCH_PATHS} NO_DEFAULT_PATH)
list(FIND MONERO_OPTIONAL "${LIB}" LIB_OPTIONAL)
if (NOT LIB_PATH)
if (LIB_OPTIONAL EQUAL -1)
message(FATAL_ERROR "Unable to find required Monero library ${LIB}")
endif()
else ()
set(LIB_NAME "monero::${LIB}")
add_library(${LIB_NAME} STATIC IMPORTED)
set_target_properties(${LIB_NAME} PROPERTIES IMPORTED_LOCATION ${LIB_PATH})
list(APPEND IMPORTED_MONERO_LIBRARIES "${LIB_NAME}")
endif()
unset(LIB_PATH CACHE)
endforeach()
if(APPLE)
find_library(IOKIT_LIBRARY IOKit)
list(APPEND IMPORTED_MONERO_LIBRARIES ${IOKIT_LIBRARY})
endif() endif()
find_package(Sodium REQUIRED)
add_library(monero::libraries INTERFACE IMPORTED) add_library(monero::libraries INTERFACE IMPORTED)
set_property(TARGET monero::libraries PROPERTY set_property(TARGET monero::libraries PROPERTY
INTERFACE_INCLUDE_DIRECTORIES INTERFACE_INCLUDE_DIRECTORIES
${Boost_INCLUDE_DIR} ${Boost_INCLUDE_DIR}
${monero_HIDAPI_INCLUDE_DIRS}
${monero_OPENSSL_INCLUDE_DIR}
"${MONERO_BUILD_DIR}/generated_include"
"${MONERO_SOURCE_DIR}/contrib/epee/include" "${MONERO_SOURCE_DIR}/contrib/epee/include"
"${MONERO_SOURCE_DIR}/external/easylogging++" "${MONERO_SOURCE_DIR}/external/easylogging++"
"${MONERO_SOURCE_DIR}/external/rapidjson/include" "${MONERO_SOURCE_DIR}/external/rapidjson/include"
@@ -227,28 +78,11 @@ set_property(TARGET monero::libraries PROPERTY
) )
set_property(TARGET monero::libraries PROPERTY set_property(TARGET monero::libraries PROPERTY
INTERFACE_LINK_LIBRARIES INTERFACE_LINK_LIBRARIES
${IMPORTED_MONERO_LIBRARIES} common
${Boost_CHRONO_LIBRARY} epee
${Boost_FILESYSTEM_LIBRARY} mnemonics
${Boost_PROGRAM_OPTIONS_LIBRARY} wallet_api
${Boost_REGEX_LIBRARY}
${Boost_SERIALIZATION_LIBRARY}
${Boost_SYSTEM_LIBRARY}
${Boost_THREAD_LIBRARY}
${monero_HIDAPI_LIBRARY}
${monero_usb_LIBRARY}
${monero_LIBUDEV_LIBRARY}
${monero_OPENSSL_SSL_LIBRARY}
${monero_OPENSSL_CRYPTO_LIBRARY}
${monero_sodium_LIBRARY_RELEASE}
${monero_UNBOUND_LIBRARIES}
${CMAKE_DL_LIBS}
) )
#
# Build monero-lws code
#
include_directories(include)
add_subdirectory(src) add_subdirectory(src)
+13
View File
@@ -0,0 +1,13 @@
diff --git a/cmake/CheckLinkerFlag.cmake b/cmake/CheckLinkerFlag.cmake
index 7ecf5f610..69eefe810 100644
--- a/cmake/CheckLinkerFlag.cmake
+++ b/cmake/CheckLinkerFlag.cmake
@@ -6,7 +6,7 @@ macro(CHECK_LINKER_FLAG flag VARIABLE)
message(STATUS "Looking for ${flag} linker flag")
endif()
- set(_cle_source ${CMAKE_SOURCE_DIR}/cmake/CheckLinkerFlag.c)
+ set(_cle_source ${monero_SOURCE_DIR}/cmake/CheckLinkerFlag.c)
set(saved_CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
set(CMAKE_C_FLAGS "${flag}")
+20 -1343
View File
File diff suppressed because it is too large Load Diff
+21 -7
View File
@@ -29,7 +29,6 @@
include_directories(.) include_directories(.)
add_subdirectory(wire) add_subdirectory(wire)
# For both the server and admin utility.
set(lwsf_sources set(lwsf_sources
address_book.cpp address_book.cpp
backend.cpp backend.cpp
@@ -53,16 +52,31 @@ set(lwsf_headers
transaction_info.h transaction_info.h
wallet.h wallet.h
) )
add_executable(lwsf-ledger ledger_main.cpp ${lwsf_sources} ${lwsf_headers}) add_library(lwsf-api ${lwsf_sources} ${lwsf_headers})
target_link_libraries(lwsf-ledger target_include_directories(lwsf-api
PUBLIC
"${lwsf_SOURCE_DIR}/include"
PRIVATE
"."
)
target_link_libraries(lwsf-api
PUBLIC
monero::libraries
PRIVATE PRIVATE
lwsf-wire lwsf-wire
lwsf-wire-json lwsf-wire-json
lwsf-wire-msgpack lwsf-wire-msgpack
lwsf-wire-wrapper lwsf-wire-wrapper
monero::libraries ${Boost_THREAD_LIBRARY}
${Boost_PROGRAM_OPTIONS_LIBRARY} ${sodium_LIBRARY_RELEASE}
${Boost_FILESYSTEM_LIBRARY} Threads::Threads
)
add_executable(lwsf-ledger ledger_main.cpp)
target_link_libraries(lwsf-ledger
PRIVATE
lwsf-api
${Boost_PROGRAM_OPTIONS_LIBRARY}
) )
+1 -1
View File
@@ -404,7 +404,7 @@ namespace lwsf
return new internal::wallet_manager{}; return new internal::wallet_manager{};
} }
void WalletManagerFactory::setLogLevel(int level) void WalletManagerFactory::setLogLevel(LogLevel level)
{ {
//! \TODO Complete //! \TODO Complete
} }
-1
View File
@@ -30,7 +30,6 @@ set(lwsf-wire_sources basic_value.cpp error.cpp read.cpp write.cpp)
set(lwsf-wire_headers basic_value.h error.h field.h filters.h fwd.h json.h read.h traits.h vector.h write.h) set(lwsf-wire_headers basic_value.h error.h field.h filters.h fwd.h json.h read.h traits.h vector.h write.h)
add_library(lwsf-wire ${lwsf-wire_sources} ${lwsf-wire_headers}) add_library(lwsf-wire ${lwsf-wire_sources} ${lwsf-wire_headers})
target_include_directories(lwsf-wire PUBLIC "${LMDB_INCLUDE}")
target_link_libraries(lwsf-wire PRIVATE monero::libraries) target_link_libraries(lwsf-wire PRIVATE monero::libraries)
add_subdirectory(json) add_subdirectory(json)