mirror of
https://github.com/monero-project/monero.git
synced 2024-11-18 00:37:43 +00:00
80 lines
2.8 KiB
CMake
80 lines
2.8 KiB
CMake
|
OPTION(USE_DEVICE_TREZOR "Trezor support compilation" ON)
|
||
|
OPTION(USE_DEVICE_TREZOR_LIBUSB "Trezor LibUSB compilation" ON)
|
||
|
OPTION(USE_DEVICE_TREZOR_UDP_RELEASE "Trezor UdpTransport in release mode" OFF)
|
||
|
|
||
|
# Use Trezor master switch
|
||
|
if (USE_DEVICE_TREZOR)
|
||
|
# Protobuf is required to build protobuf messages for Trezor
|
||
|
include(FindProtobuf OPTIONAL)
|
||
|
find_package(Protobuf)
|
||
|
if(NOT Protobuf_FOUND)
|
||
|
message(STATUS "Could not find Protobuf")
|
||
|
endif()
|
||
|
|
||
|
else()
|
||
|
message(STATUS "Trezor support disabled by USE_DEVICE_TREZOR")
|
||
|
endif()
|
||
|
|
||
|
if(Protobuf_FOUND AND USE_DEVICE_TREZOR)
|
||
|
if (NOT "$ENV{TREZOR_PYTHON}" STREQUAL "")
|
||
|
set(TREZOR_PYTHON "$ENV{TREZOR_PYTHON}" CACHE INTERNAL "Copied from environment variable TREZOR_PYTHON")
|
||
|
else()
|
||
|
find_package(Python QUIET COMPONENTS Interpreter) # cmake 3.12+
|
||
|
if(Python_Interpreter_FOUND)
|
||
|
set(TREZOR_PYTHON "${Python_EXECUTABLE}")
|
||
|
endif()
|
||
|
endif()
|
||
|
|
||
|
if(NOT TREZOR_PYTHON)
|
||
|
find_package(PythonInterp)
|
||
|
if(PYTHONINTERP_FOUND AND PYTHON_EXECUTABLE)
|
||
|
set(TREZOR_PYTHON "${PYTHON_EXECUTABLE}")
|
||
|
endif()
|
||
|
endif()
|
||
|
|
||
|
if(NOT TREZOR_PYTHON)
|
||
|
message(STATUS "Trezor: Python not found")
|
||
|
endif()
|
||
|
endif()
|
||
|
|
||
|
# Try to build protobuf messages
|
||
|
if(Protobuf_FOUND AND USE_DEVICE_TREZOR AND TREZOR_PYTHON)
|
||
|
set(ENV{PROTOBUF_INCLUDE_DIRS} "${Protobuf_INCLUDE_DIRS}")
|
||
|
set(ENV{PROTOBUF_PROTOC_EXECUTABLE} "${Protobuf_PROTOC_EXECUTABLE}")
|
||
|
execute_process(COMMAND ${TREZOR_PYTHON} tools/build_protob.py WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/../src/device_trezor/trezor RESULT_VARIABLE RET OUTPUT_VARIABLE OUT ERROR_VARIABLE ERR)
|
||
|
if(RET)
|
||
|
message(WARNING "Trezor protobuf messages could not be regenerated (err=${RET}, python ${PYTHON})."
|
||
|
"OUT: ${OUT}, ERR: ${ERR}."
|
||
|
"Please read src/device_trezor/trezor/tools/README.md")
|
||
|
else()
|
||
|
message(STATUS "Trezor protobuf messages regenerated ${OUT}")
|
||
|
set(DEVICE_TREZOR_READY 1)
|
||
|
add_definitions(-DDEVICE_TREZOR_READY=1)
|
||
|
|
||
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||
|
add_definitions(-DTREZOR_DEBUG=1)
|
||
|
endif()
|
||
|
|
||
|
if(USE_DEVICE_TREZOR_UDP_RELEASE)
|
||
|
add_definitions(-DWITH_DEVICE_TREZOR_UDP_RELEASE=1)
|
||
|
endif()
|
||
|
|
||
|
if (Protobuf_INCLUDE_DIR)
|
||
|
include_directories(${Protobuf_INCLUDE_DIR})
|
||
|
endif()
|
||
|
|
||
|
# LibUSB support, check for particular version
|
||
|
# Include support only if compilation test passes
|
||
|
if (USE_DEVICE_TREZOR_LIBUSB)
|
||
|
find_package(LibUSB)
|
||
|
endif()
|
||
|
|
||
|
if (LibUSB_COMPILE_TEST_PASSED)
|
||
|
add_definitions(-DHAVE_TREZOR_LIBUSB=1)
|
||
|
if(LibUSB_INCLUDE_DIRS)
|
||
|
include_directories(${LibUSB_INCLUDE_DIRS})
|
||
|
endif()
|
||
|
endif()
|
||
|
endif()
|
||
|
endif()
|