mirror of
https://codeberg.org/wownero/wownero-lws
synced 2026-01-09 15:15:15 -08:00
Initial working base separated from top-level monero project
This commit is contained in:
172
CMakeLists.txt
Normal file
172
CMakeLists.txt
Normal file
@@ -0,0 +1,172 @@
|
||||
# Copyright (c) 2020, The Monero Project
|
||||
#
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without modification, are
|
||||
# permitted provided that the following conditions are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||
# conditions and the following disclaimer.
|
||||
#
|
||||
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||
# of conditions and the following disclaimer in the documentation and/or other
|
||||
# materials provided with the distribution.
|
||||
#
|
||||
# 3. Neither the name of the copyright holder nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software without specific
|
||||
# prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
cmake_minimum_required(VERSION 3.1.0)
|
||||
project(monero-lws)
|
||||
|
||||
set(MONERO_LIBRARIES
|
||||
daemon_messages
|
||||
serialization
|
||||
lmdb_lib
|
||||
net
|
||||
cryptonote_core
|
||||
cryptonote_basic
|
||||
ringct
|
||||
ringct_basic
|
||||
multisig
|
||||
hardforks
|
||||
checkpoints
|
||||
blockchain_db
|
||||
common
|
||||
lmdb
|
||||
device
|
||||
cncrypto
|
||||
randomx
|
||||
epee
|
||||
easylogging
|
||||
version
|
||||
wallet-crypto
|
||||
)
|
||||
|
||||
set(MONERO_OPTIONAL wallet-crypto)
|
||||
|
||||
set(MONERO_SEARCH_PATHS
|
||||
"/contrib/epee/src"
|
||||
"/external/db_drivers/liblmdb"
|
||||
"/external/easylogging++"
|
||||
"/src"
|
||||
"/src/crypto"
|
||||
"/src/crypto/wallet"
|
||||
"/src/lmdb"
|
||||
"/src/ringct"
|
||||
"/src/rpc"
|
||||
)
|
||||
|
||||
|
||||
#
|
||||
# Pull some information from monero build
|
||||
#
|
||||
|
||||
# Needed due to "bug" in monero CMake - the `project` function is used twice!
|
||||
if (NOT MONERO_SOURCE_DIR)
|
||||
message(FATAL_ERROR "The argument -DMONERO_SOURCE_DIR must specify a location of a monero source tree")
|
||||
endif()
|
||||
|
||||
if (NOT MONERO_BUILD_DIR)
|
||||
message(FATAL_ERROR "The argument -DMONERO_BUILD_DIR must specify a location of an existing monero build")
|
||||
endif()
|
||||
|
||||
load_cache(${MONERO_BUILD_DIR} READ_WITH_PREFIX monero_
|
||||
Boost_THREAD_LIBRARY_RELEASE
|
||||
CMAKE_CXX_COMPILER
|
||||
EXTRA_LIBRARIES
|
||||
HIDAPI_LIBRARY
|
||||
LMDB_INCLUDE
|
||||
monero_SOURCE_DIR
|
||||
OPENSSL_CRYPTO_LIBRARY
|
||||
OPENSSL_SSL_LIBRARY
|
||||
SODIUM_LIBRARY
|
||||
UNBOUND_LIBRARIES
|
||||
ZMQ_INCLUDE_PATH
|
||||
ZMQ_LIB
|
||||
)
|
||||
|
||||
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()
|
||||
|
||||
#
|
||||
# Dependencies specific to monero-lws
|
||||
#
|
||||
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
find_package(Boost 1.58 QUIET REQUIRED COMPONENTS chrono filesystem program_options regex serialization thread)
|
||||
|
||||
if (NOT (Boost_THREAD_LIBRARY STREQUAL monero_Boost_THREAD_LIBRARY_RELEASE))
|
||||
message(FATAL_ERROR "Boost libraries for monero build differs from this project")
|
||||
endif()
|
||||
|
||||
foreach (LIB ${MONERO_LIBRARIES})
|
||||
find_library(LIB_PATH NAMES "${LIB}" PATHS ${MONERO_BUILD_DIR} PATH_SUFFIXES "/src/${LIB}" "external/${LIB}" ${MONERO_SEARCH_PATHS} REQUIRED NO_DEFAULT_PATH)
|
||||
|
||||
list(FIND MONERO_OPTIONAL "${LIB}" LIB_OPTIONAL)
|
||||
if (NOT LIB_PATH AND NOT LIB_OPTIONAL)
|
||||
message(FATAL_ERROR "Unable to find required Monero library ${LIB}")
|
||||
endif()
|
||||
|
||||
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}")
|
||||
unset(LIB_PATH CACHE)
|
||||
endforeach()
|
||||
|
||||
add_library(monero::libraries INTERFACE IMPORTED)
|
||||
target_include_directories(monero::libraries SYSTEM
|
||||
INTERFACE
|
||||
${Boost_INCLUDE_DIR}
|
||||
"${MONERO_BUILD_DIR}/generated_include"
|
||||
"${MONERO_SOURCE_DIR}/contrib/epee/include"
|
||||
"${MONERO_SOURCE_DIR}/external/easylogging++"
|
||||
"${MONERO_SOURCE_DIR}/external/rapidjson/include"
|
||||
"${MONERO_SOURCE_DIR}/src"
|
||||
)
|
||||
target_link_libraries(monero::libraries
|
||||
INTERFACE
|
||||
${CMAKE_DL_LIBS}
|
||||
${Boost_CHRONO_LIBRARY}
|
||||
${Boost_FILESYSTEM_LIBRARY}
|
||||
${Boost_REGEX_LIBRARY}
|
||||
${Boost_SERIALIZATION_LIBRARY}
|
||||
${Boost_THREAD_LIBRARY}
|
||||
${monero_HIDAPI_LIBRARY}
|
||||
${monero_OPENSSL_CRYPTO_LIBRARY}
|
||||
${monero_OPENSSL_SSL_LIBRARY}
|
||||
${monero_SODIUM_LIBRARY}
|
||||
${monero_UNBOUND_LIBRARIES}
|
||||
${IMPORTED_MONERO_LIBRARIES}
|
||||
)
|
||||
|
||||
set(LMDB_INCLUDE "${monero_LMDB_INCLUDE}")
|
||||
set(LMDB_LIB_PATH "monero::lmdb")
|
||||
set(ZMQ_LIB "${monero_ZMQ_LIB}")
|
||||
set(ZMQ_INCLUDE_PATH "${monero_ZMQ_INCLUDE_PATH}")
|
||||
|
||||
|
||||
#
|
||||
# Build monero-lws code
|
||||
#
|
||||
|
||||
add_subdirectory(src)
|
||||
Reference in New Issue
Block a user