mirror of
https://git.wownero.com/wownero/wownero.git
synced 2024-08-15 01:03:23 +00:00
build: protobuf dependency fixes, libusb build
- docker protobuf dependencies, cross-compilation - device/trezor protobuf build fixes, try_compile - libusb built under all platforms, used by trezor for direct connect
This commit is contained in:
parent
6bc0c7e685
commit
e37154a879
12 changed files with 228 additions and 25 deletions
|
@ -23,9 +23,9 @@ env:
|
||||||
- DOCKER_PACKAGES="build-essential libtool cmake autotools-dev automake pkg-config bsdmainutils curl git ca-certificates ccache"
|
- DOCKER_PACKAGES="build-essential libtool cmake autotools-dev automake pkg-config bsdmainutils curl git ca-certificates ccache"
|
||||||
matrix:
|
matrix:
|
||||||
# ARM v7
|
# ARM v7
|
||||||
- HOST=arm-linux-gnueabihf PACKAGES="gperf g++-arm-linux-gnueabihf"
|
- HOST=arm-linux-gnueabihf PACKAGES="python3 gperf g++-arm-linux-gnueabihf"
|
||||||
# ARM v8
|
# ARM v8
|
||||||
- HOST=aarch64-linux-gnu PACKAGES="gperf g++-aarch64-linux-gnu"
|
- HOST=aarch64-linux-gnu PACKAGES="python3 gperf g++-aarch64-linux-gnu"
|
||||||
# i686 Win
|
# i686 Win
|
||||||
- HOST=i686-w64-mingw32 PACKAGES="python3 nsis g++-mingw-w64-i686"
|
- HOST=i686-w64-mingw32 PACKAGES="python3 nsis g++-mingw-w64-i686"
|
||||||
# i686 Linux
|
# i686 Linux
|
||||||
|
@ -33,7 +33,7 @@ env:
|
||||||
# Win64
|
# Win64
|
||||||
- HOST=x86_64-w64-mingw32 PACKAGES="cmake python3 nsis g++-mingw-w64-x86-64 wine-binfmt wine64 bc" RUN_TESTS=true
|
- HOST=x86_64-w64-mingw32 PACKAGES="cmake python3 nsis g++-mingw-w64-x86-64 wine-binfmt wine64 bc" RUN_TESTS=true
|
||||||
# x86_64 Linux
|
# x86_64 Linux
|
||||||
- HOST=x86_64-unknown-linux-gnu PACKAGES="gperf cmake python3-zmq protobuf-compiler libdbus-1-dev libharfbuzz-dev libprotobuf-dev" RUN_TESTS=true
|
- HOST=x86_64-unknown-linux-gnu PACKAGES="gperf cmake python3-zmq libdbus-1-dev libharfbuzz-dev" RUN_TESTS=true
|
||||||
# Cross-Mac
|
# Cross-Mac
|
||||||
- HOST=x86_64-apple-darwin11 PACKAGES="cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools python-dev python3-setuptools-git" OSX_SDK=10.11
|
- HOST=x86_64-apple-darwin11 PACKAGES="cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools python-dev python3-setuptools-git" OSX_SDK=10.11
|
||||||
|
|
||||||
|
@ -52,6 +52,7 @@ before_script:
|
||||||
- if [ -n "$OSX_SDK" -a ! -f contrib/depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then curl --location --fail $SDK_URL/MacOSX${OSX_SDK}.sdk.tar.gz -o contrib/depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi
|
- if [ -n "$OSX_SDK" -a ! -f contrib/depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then curl --location --fail $SDK_URL/MacOSX${OSX_SDK}.sdk.tar.gz -o contrib/depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi
|
||||||
- if [ -n "$OSX_SDK" -a -f contrib/depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then tar -C contrib/depends/SDKs -xf contrib/depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi
|
- if [ -n "$OSX_SDK" -a -f contrib/depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then tar -C contrib/depends/SDKs -xf contrib/depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi
|
||||||
- if [[ $HOST = *-mingw32 ]]; then $DOCKER_EXEC bash -c "update-alternatives --set $HOST-g++ \$(which $HOST-g++-posix)"; fi
|
- if [[ $HOST = *-mingw32 ]]; then $DOCKER_EXEC bash -c "update-alternatives --set $HOST-g++ \$(which $HOST-g++-posix)"; fi
|
||||||
|
- if [[ $HOST = *-mingw32 ]]; then $DOCKER_EXEC bash -c "update-alternatives --set $HOST-gcc \$(which $HOST-gcc-posix)"; fi
|
||||||
- if [ -z "$NO_DEPENDS" ]; then $DOCKER_EXEC bash -c "CONFIG_SHELL= make $MAKEJOBS -C contrib/depends HOST=$HOST $DEP_OPTS"; fi
|
- if [ -z "$NO_DEPENDS" ]; then $DOCKER_EXEC bash -c "CONFIG_SHELL= make $MAKEJOBS -C contrib/depends HOST=$HOST $DEP_OPTS"; fi
|
||||||
script:
|
script:
|
||||||
- git submodule init && git submodule update
|
- git submodule init && git submodule update
|
||||||
|
|
17
Dockerfile
17
Dockerfile
|
@ -20,7 +20,8 @@ RUN set -ex && \
|
||||||
automake \
|
automake \
|
||||||
bzip2 \
|
bzip2 \
|
||||||
xsltproc \
|
xsltproc \
|
||||||
gperf
|
gperf \
|
||||||
|
unzip
|
||||||
|
|
||||||
WORKDIR /usr/local
|
WORKDIR /usr/local
|
||||||
|
|
||||||
|
@ -147,6 +148,20 @@ RUN set -ex \
|
||||||
&& make \
|
&& make \
|
||||||
&& make install
|
&& make install
|
||||||
|
|
||||||
|
# Protobuf
|
||||||
|
ARG PROTOBUF_VERSION=v3.6.1
|
||||||
|
ARG PROTOBUF_HASH=48cb18e5c419ddd23d9badcfe4e9df7bde1979b2
|
||||||
|
RUN set -ex \
|
||||||
|
&& git clone https://github.com/protocolbuffers/protobuf -b ${PROTOBUF_VERSION} \
|
||||||
|
&& cd protobuf \
|
||||||
|
&& test `git rev-parse HEAD` = ${PROTOBUF_HASH} || exit 1 \
|
||||||
|
&& git submodule update --init --recursive \
|
||||||
|
&& ./autogen.sh \
|
||||||
|
&& CFLAGS="-fPIC" CXXFLAGS="-fPIC" ./configure --enable-static --disable-shared \
|
||||||
|
&& make \
|
||||||
|
&& make install \
|
||||||
|
&& ldconfig
|
||||||
|
|
||||||
WORKDIR /src
|
WORKDIR /src
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
|
|
|
@ -2,13 +2,55 @@ OPTION(USE_DEVICE_TREZOR "Trezor support compilation" ON)
|
||||||
OPTION(USE_DEVICE_TREZOR_LIBUSB "Trezor LibUSB compilation" ON)
|
OPTION(USE_DEVICE_TREZOR_LIBUSB "Trezor LibUSB compilation" ON)
|
||||||
OPTION(USE_DEVICE_TREZOR_UDP_RELEASE "Trezor UdpTransport in release mode" OFF)
|
OPTION(USE_DEVICE_TREZOR_UDP_RELEASE "Trezor UdpTransport in release mode" OFF)
|
||||||
|
|
||||||
|
# Helper function to fix cmake < 3.6.0 FindProtobuf variables
|
||||||
|
function(_trezor_protobuf_fix_vars)
|
||||||
|
if(${CMAKE_VERSION} VERSION_LESS "3.6.0")
|
||||||
|
foreach(UPPER
|
||||||
|
PROTOBUF_SRC_ROOT_FOLDER
|
||||||
|
PROTOBUF_IMPORT_DIRS
|
||||||
|
PROTOBUF_DEBUG
|
||||||
|
PROTOBUF_LIBRARY
|
||||||
|
PROTOBUF_PROTOC_LIBRARY
|
||||||
|
PROTOBUF_INCLUDE_DIR
|
||||||
|
PROTOBUF_PROTOC_EXECUTABLE
|
||||||
|
PROTOBUF_LIBRARY_DEBUG
|
||||||
|
PROTOBUF_PROTOC_LIBRARY_DEBUG
|
||||||
|
PROTOBUF_LITE_LIBRARY
|
||||||
|
PROTOBUF_LITE_LIBRARY_DEBUG
|
||||||
|
)
|
||||||
|
if (DEFINED ${UPPER})
|
||||||
|
string(REPLACE "PROTOBUF_" "Protobuf_" Camel ${UPPER})
|
||||||
|
if (NOT DEFINED ${Camel})
|
||||||
|
set(${Camel} ${${UPPER}} PARENT_SCOPE)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
# Use Trezor master switch
|
# Use Trezor master switch
|
||||||
if (USE_DEVICE_TREZOR)
|
if (USE_DEVICE_TREZOR)
|
||||||
# Protobuf is required to build protobuf messages for Trezor
|
# Protobuf is required to build protobuf messages for Trezor
|
||||||
include(FindProtobuf OPTIONAL)
|
include(FindProtobuf OPTIONAL)
|
||||||
find_package(Protobuf)
|
find_package(Protobuf)
|
||||||
if(NOT Protobuf_FOUND)
|
_trezor_protobuf_fix_vars()
|
||||||
|
|
||||||
|
# Protobuf handling the cache variables set in docker.
|
||||||
|
if(NOT Protobuf_FOUND AND NOT Protobuf_LIBRARY AND NOT Protobuf_PROTOC_EXECUTABLE AND NOT Protobuf_INCLUDE_DIR)
|
||||||
message(STATUS "Could not find Protobuf")
|
message(STATUS "Could not find Protobuf")
|
||||||
|
elseif(NOT Protobuf_LIBRARY OR NOT EXISTS "${Protobuf_LIBRARY}")
|
||||||
|
message(STATUS "Protobuf library not found: ${Protobuf_LIBRARY}")
|
||||||
|
unset(Protobuf_FOUND)
|
||||||
|
elseif(NOT Protobuf_PROTOC_EXECUTABLE OR NOT EXISTS "${Protobuf_PROTOC_EXECUTABLE}")
|
||||||
|
message(STATUS "Protobuf executable not found: ${Protobuf_PROTOC_EXECUTABLE}")
|
||||||
|
unset(Protobuf_FOUND)
|
||||||
|
elseif(NOT Protobuf_INCLUDE_DIR OR NOT EXISTS "${Protobuf_INCLUDE_DIR}")
|
||||||
|
message(STATUS "Protobuf include dir not found: ${Protobuf_INCLUDE_DIR}")
|
||||||
|
unset(Protobuf_FOUND)
|
||||||
|
else()
|
||||||
|
message(STATUS "Protobuf lib: ${Protobuf_LIBRARY}, inc: ${Protobuf_INCLUDE_DIR}, protoc: ${Protobuf_PROTOC_EXECUTABLE}")
|
||||||
|
set(Protobuf_INCLUDE_DIRS ${Protobuf_INCLUDE_DIR})
|
||||||
|
set(Protobuf_FOUND 1) # override found if all rquired info was provided by variables
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
else()
|
else()
|
||||||
|
@ -37,9 +79,32 @@ if(Protobuf_FOUND AND USE_DEVICE_TREZOR)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Try to build protobuf messages
|
# Protobuf compilation test
|
||||||
if(Protobuf_FOUND AND USE_DEVICE_TREZOR AND TREZOR_PYTHON)
|
if(Protobuf_FOUND AND USE_DEVICE_TREZOR AND TREZOR_PYTHON)
|
||||||
set(ENV{PROTOBUF_INCLUDE_DIRS} "${Protobuf_INCLUDE_DIRS}")
|
execute_process(COMMAND ${Protobuf_PROTOC_EXECUTABLE} -I "${CMAKE_SOURCE_DIR}/cmake" -I "${Protobuf_INCLUDE_DIR}" "${CMAKE_SOURCE_DIR}/cmake/test-protobuf.proto" --cpp_out ${CMAKE_BINARY_DIR} RESULT_VARIABLE RET OUTPUT_VARIABLE OUT ERROR_VARIABLE ERR)
|
||||||
|
if(RET)
|
||||||
|
message(STATUS "Protobuf test generation failed: ${OUT} ${ERR}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
try_compile(Protobuf_COMPILE_TEST_PASSED
|
||||||
|
"${CMAKE_BINARY_DIR}"
|
||||||
|
SOURCES
|
||||||
|
"${CMAKE_BINARY_DIR}/test-protobuf.pb.cc"
|
||||||
|
"${CMAKE_SOURCE_DIR}/cmake/test-protobuf.cpp"
|
||||||
|
CMAKE_FLAGS
|
||||||
|
"-DINCLUDE_DIRECTORIES=${Protobuf_INCLUDE_DIR};${CMAKE_BINARY_DIR}"
|
||||||
|
"-DCMAKE_CXX_STANDARD=11"
|
||||||
|
LINK_LIBRARIES ${Protobuf_LIBRARY}
|
||||||
|
OUTPUT_VARIABLE OUTPUT
|
||||||
|
)
|
||||||
|
if(NOT Protobuf_COMPILE_TEST_PASSED)
|
||||||
|
message(STATUS "Protobuf Compilation test failed: ${OUTPUT}.")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Try to build protobuf messages
|
||||||
|
if(Protobuf_FOUND AND USE_DEVICE_TREZOR AND TREZOR_PYTHON AND Protobuf_COMPILE_TEST_PASSED)
|
||||||
|
set(ENV{PROTOBUF_INCLUDE_DIRS} "${Protobuf_INCLUDE_DIR}")
|
||||||
set(ENV{PROTOBUF_PROTOC_EXECUTABLE} "${Protobuf_PROTOC_EXECUTABLE}")
|
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)
|
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)
|
if(RET)
|
||||||
|
@ -47,9 +112,10 @@ if(Protobuf_FOUND AND USE_DEVICE_TREZOR AND TREZOR_PYTHON)
|
||||||
"OUT: ${OUT}, ERR: ${ERR}."
|
"OUT: ${OUT}, ERR: ${ERR}."
|
||||||
"Please read src/device_trezor/trezor/tools/README.md")
|
"Please read src/device_trezor/trezor/tools/README.md")
|
||||||
else()
|
else()
|
||||||
message(STATUS "Trezor protobuf messages regenerated ${OUT}")
|
message(STATUS "Trezor protobuf messages regenerated out: \"${OUT}.\"")
|
||||||
set(DEVICE_TREZOR_READY 1)
|
set(DEVICE_TREZOR_READY 1)
|
||||||
add_definitions(-DDEVICE_TREZOR_READY=1)
|
add_definitions(-DDEVICE_TREZOR_READY=1)
|
||||||
|
add_definitions(-DPROTOBUF_INLINE_NOT_IN_HEADERS=0)
|
||||||
|
|
||||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
add_definitions(-DTREZOR_DEBUG=1)
|
add_definitions(-DTREZOR_DEBUG=1)
|
||||||
|
@ -75,5 +141,26 @@ if(Protobuf_FOUND AND USE_DEVICE_TREZOR AND TREZOR_PYTHON)
|
||||||
include_directories(${LibUSB_INCLUDE_DIRS})
|
include_directories(${LibUSB_INCLUDE_DIRS})
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
set(TREZOR_LIBUSB_LIBRARIES "")
|
||||||
|
if(LibUSB_COMPILE_TEST_PASSED)
|
||||||
|
list(APPEND TREZOR_LIBUSB_LIBRARIES ${LibUSB_LIBRARIES})
|
||||||
|
message(STATUS "Trezor compatible LibUSB found at: ${LibUSB_INCLUDE_DIRS}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (BUILD_GUI_DEPS)
|
||||||
|
set(TREZOR_DEP_LIBS "")
|
||||||
|
set(TREZOR_DEP_LINKER "")
|
||||||
|
|
||||||
|
if (Protobuf_LIBRARY)
|
||||||
|
list(APPEND TREZOR_DEP_LIBS ${Protobuf_LIBRARY})
|
||||||
|
string(APPEND TREZOR_DEP_LINKER " -lprotobuf")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (TREZOR_LIBUSB_LIBRARIES)
|
||||||
|
list(APPEND TREZOR_DEP_LIBS ${TREZOR_LIBUSB_LIBRARIES})
|
||||||
|
string(APPEND TREZOR_DEP_LINKER " -lusb-1.0")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
43
cmake/test-protobuf.cpp
Normal file
43
cmake/test-protobuf.cpp
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
// Copyright (c) 2014-2018, 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.
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <iostream>
|
||||||
|
#include <google/protobuf/message.h>
|
||||||
|
#include <google/protobuf/unknown_field_set.h>
|
||||||
|
#include "test-protobuf.pb.h"
|
||||||
|
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
google::protobuf::UnknownFieldSet ufs;
|
||||||
|
ufs.ClearAndFreeMemory();
|
||||||
|
|
||||||
|
Success sc;
|
||||||
|
sc.set_message("test");
|
||||||
|
sc.SerializeToOstream(&std::cerr);
|
||||||
|
return 0;
|
||||||
|
}
|
7
cmake/test-protobuf.proto
Normal file
7
cmake/test-protobuf.proto
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
syntax = "proto2";
|
||||||
|
|
||||||
|
import "google/protobuf/descriptor.proto";
|
||||||
|
|
||||||
|
message Success {
|
||||||
|
optional string message = 1;
|
||||||
|
}
|
|
@ -59,6 +59,16 @@ Download it from apple, or search for it on github. Create a new directoty calle
|
||||||
directory and place the entire MacOSX10.11.sdk folder in it. The depends build will then pick it up automatically
|
directory and place the entire MacOSX10.11.sdk folder in it. The depends build will then pick it up automatically
|
||||||
(without requiring SDK_PATH).
|
(without requiring SDK_PATH).
|
||||||
|
|
||||||
|
|
||||||
|
#Mingw builds
|
||||||
|
|
||||||
|
Building for 32/64bit mingw requires switching alternatives to a posix mode
|
||||||
|
|
||||||
|
```bash
|
||||||
|
update-alternatives --set x86_64-w64-mingw32-g++ x86_64-w64-mingw32-g++-posix
|
||||||
|
update-alternatives --set x86_64-w64-mingw32-gcc x86_64-w64-mingw32-gcc-posix
|
||||||
|
```
|
||||||
|
|
||||||
### Other documentation
|
### Other documentation
|
||||||
|
|
||||||
- [description.md](description.md): General description of the depends system
|
- [description.md](description.md): General description of the depends system
|
||||||
|
|
|
@ -11,13 +11,21 @@ endef
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
$(package)_config_opts=--disable-shared
|
$(package)_config_opts=--disable-shared
|
||||||
$(package)_config_opts_linux=--with-pic --disable-udev
|
$(package)_config_opts_linux=--with-pic --disable-udev
|
||||||
|
$(package)_config_opts_mingw32=--disable-udev
|
||||||
|
$(package)_config_opts_darwin=--disable-udev
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_config_cmds
|
ifneq ($(host_os),darwin)
|
||||||
cp -f $(BASEDIR)/config.guess config.guess &&\
|
define $(package)_config_cmds
|
||||||
cp -f $(BASEDIR)/config.sub config.sub &&\
|
cp -f $(BASEDIR)/config.guess config.guess &&\
|
||||||
$($(package)_autoconf)
|
cp -f $(BASEDIR)/config.sub config.sub &&\
|
||||||
endef
|
$($(package)_autoconf)
|
||||||
|
endef
|
||||||
|
else
|
||||||
|
define $(package)_config_cmds
|
||||||
|
$($(package)_autoconf)
|
||||||
|
endef
|
||||||
|
endif
|
||||||
|
|
||||||
define $(package)_build_cmd
|
define $(package)_build_cmd
|
||||||
$(MAKE)
|
$(MAKE)
|
||||||
|
@ -27,5 +35,5 @@ define $(package)_stage_cmds
|
||||||
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_postprocess_cmds cp -f lib/libusb-1.0.a lib/libusb.a
|
define $(package)_postprocess_cmds cp -f lib/libusb-1.0.a lib/libusb.a
|
||||||
endef
|
endef
|
||||||
|
|
28
contrib/depends/packages/native_protobuf.mk
Normal file
28
contrib/depends/packages/native_protobuf.mk
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
package=protobuf3
|
||||||
|
$(package)_version=3.6.1
|
||||||
|
$(package)_download_path=https://github.com/protocolbuffers/protobuf/releases/download/v$($(package)_version)/
|
||||||
|
$(package)_file_name=protobuf-cpp-$($(package)_version).tar.gz
|
||||||
|
$(package)_sha256_hash=b3732e471a9bb7950f090fd0457ebd2536a9ba0891b7f3785919c654fe2a2529
|
||||||
|
$(package)_cxxflags=-std=c++11
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
$(package)_config_opts=--disable-shared --prefix=$(build_prefix)
|
||||||
|
$(package)_config_opts_linux=--with-pic
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
$($(package)_autoconf)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE) -C src libprotobuf.la all
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) -C src install install-libLTLIBRARIES install-nobase_includeHEADERS &&\
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install-pkgconfigDATA
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_postprocess_cmds
|
||||||
|
rm lib/libprotoc.a
|
||||||
|
endef
|
|
@ -1,12 +1,12 @@
|
||||||
packages:=boost openssl libevent zeromq cppzmq zlib expat ldns cppzmq readline libiconv qt hidapi
|
packages:=boost openssl libevent zeromq cppzmq zlib expat ldns cppzmq readline libiconv qt hidapi protobuf libusb
|
||||||
native_packages := native_ccache
|
native_packages := native_ccache native_protobuf
|
||||||
|
|
||||||
wallet_packages=bdb
|
wallet_packages=bdb
|
||||||
|
|
||||||
darwin_native_packages = native_biplist native_ds_store native_mac_alias
|
darwin_native_packages = native_biplist native_ds_store native_mac_alias
|
||||||
darwin_packages = sodium-darwin
|
darwin_packages = sodium-darwin
|
||||||
|
|
||||||
linux_packages = eudev libusb
|
linux_packages = eudev
|
||||||
|
|
||||||
ifeq ($(host_os),linux)
|
ifeq ($(host_os),linux)
|
||||||
packages += unwind
|
packages += unwind
|
||||||
|
|
|
@ -21,6 +21,12 @@ SET(LIBUNWIND_LIBRARY_DIRS @prefix@/lib)
|
||||||
SET(LIBUSB-1.0_LIBRARY @prefix@/lib/libusb-1.0.a)
|
SET(LIBUSB-1.0_LIBRARY @prefix@/lib/libusb-1.0.a)
|
||||||
SET(LIBUDEV_LIBRARY @prefix@/lib/libudev.a)
|
SET(LIBUDEV_LIBRARY @prefix@/lib/libudev.a)
|
||||||
|
|
||||||
|
SET(Protobuf_FOUND 1)
|
||||||
|
SET(Protobuf_PROTOC_EXECUTABLE @prefix@/native/bin/protoc CACHE FILEPATH "Path to the native protoc")
|
||||||
|
SET(Protobuf_INCLUDE_DIR @prefix@/include CACHE PATH "Protobuf include dir")
|
||||||
|
SET(Protobuf_INCLUDE_DIRS @prefix@/include CACHE PATH "Protobuf include dir")
|
||||||
|
SET(Protobuf_LIBRARY @prefix@/lib/libprotobuf.a CACHE FILEPATH "Protobuf library")
|
||||||
|
|
||||||
SET(ZMQ_INCLUDE_PATH @prefix@/include)
|
SET(ZMQ_INCLUDE_PATH @prefix@/include)
|
||||||
SET(ZMQ_LIB @prefix@/lib/libzmq.a)
|
SET(ZMQ_LIB @prefix@/lib/libzmq.a)
|
||||||
|
|
||||||
|
|
|
@ -67,14 +67,6 @@ set(trezor_private_headers)
|
||||||
if(DEVICE_TREZOR_READY)
|
if(DEVICE_TREZOR_READY)
|
||||||
message(STATUS "Trezor support enabled")
|
message(STATUS "Trezor support enabled")
|
||||||
|
|
||||||
add_definitions(-DPROTOBUF_INLINE_NOT_IN_HEADERS=0)
|
|
||||||
|
|
||||||
set(TREZOR_LIBUSB_LIBRARIES "")
|
|
||||||
if(LibUSB_COMPILE_TEST_PASSED)
|
|
||||||
list(APPEND TREZOR_LIBUSB_LIBRARIES ${LibUSB_LIBRARIES})
|
|
||||||
message(STATUS "Trezor compatible LibUSB found at: ${LibUSB_INCLUDE_DIRS}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
monero_private_headers(device_trezor
|
monero_private_headers(device_trezor
|
||||||
${device_private_headers})
|
${device_private_headers})
|
||||||
|
|
||||||
|
|
|
@ -134,6 +134,12 @@ if (BUILD_GUI_DEPS)
|
||||||
endif()
|
endif()
|
||||||
install(TARGETS wallet_merged
|
install(TARGETS wallet_merged
|
||||||
ARCHIVE DESTINATION ${lib_folder})
|
ARCHIVE DESTINATION ${lib_folder})
|
||||||
|
|
||||||
|
install(FILES ${TREZOR_DEP_LIBS}
|
||||||
|
DESTINATION ${lib_folder})
|
||||||
|
file(WRITE "trezor_link_flags.txt" ${TREZOR_DEP_LINKER})
|
||||||
|
install(FILES "trezor_link_flags.txt"
|
||||||
|
DESTINATION ${lib_folder})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_subdirectory(api)
|
add_subdirectory(api)
|
||||||
|
|
Loading…
Reference in a new issue