Add option to use system Nanopb (#352)

This commit is contained in:
Florian Märkl 2020-10-25 21:08:13 +01:00 committed by GitHub
commit cbfa49551d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 52 additions and 13 deletions

View file

@ -18,5 +18,5 @@ jobs:
- name: Docker Build - name: Docker Build
run: cd scripts && docker build -t chiaki-bullseye . -f Dockerfile.bullseye && cd .. run: cd scripts && docker build -t chiaki-bullseye . -f Dockerfile.bullseye && cd ..
- name: Build and Test - name: Build and Test
run: docker run --rm -v "`pwd`:/build" -t chiaki-bullseye /bin/bash -c "cd /build && scripts/ci-script -DCHIAKI_USE_SYSTEM_JERASURE=ON" run: docker run --rm -v "`pwd`:/build" -t chiaki-bullseye /bin/bash -c "cd /build && scripts/ci-script -DCHIAKI_USE_SYSTEM_JERASURE=ON -DCHIAKI_USE_SYSTEM_NANOPB=ON"

View file

@ -21,6 +21,7 @@ option(CHIAKI_LIB_OPENSSL_EXTERNAL_PROJECT "Use OpenSSL as CMake external projec
option(CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER "Use SDL Gamecontroller for Input" ON) option(CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER "Use SDL Gamecontroller for Input" ON)
option(CHIAKI_CLI_ARGP_STANDALONE "Search for standalone argp lib for CLI" OFF) option(CHIAKI_CLI_ARGP_STANDALONE "Search for standalone argp lib for CLI" OFF)
tri_option(CHIAKI_USE_SYSTEM_JERASURE "Use system-provided jerasure instead of submodule" AUTO) tri_option(CHIAKI_USE_SYSTEM_JERASURE "Use system-provided jerasure instead of submodule" AUTO)
tri_option(CHIAKI_USE_SYSTEM_NANOPB "Use system-provided nanopb instead of submodule" AUTO)
set(CHIAKI_VERSION_MAJOR 1) set(CHIAKI_VERSION_MAJOR 1)
set(CHIAKI_VERSION_MINOR 3) set(CHIAKI_VERSION_MINOR 3)
@ -74,6 +75,18 @@ if(CHIAKI_USE_SYSTEM_JERASURE)
endif() endif()
endif() endif()
find_package(PythonInterp 3 REQUIRED) # Make sure nanopb doesn't find Python 2.7 because Python 2 should just die.
if(CHIAKI_USE_SYSTEM_NANOPB)
if(CHIAKI_USE_SYSTEM_NANOPB STREQUAL AUTO)
find_package(Nanopb QUIET)
set(CHIAKI_USE_SYSTEM_NANOPB ${Nanopb_FOUND})
else()
find_package(Nanopb REQUIRED)
set(CHIAKI_USE_SYSTEM_NANOPB ON)
endif()
endif()
add_subdirectory(third-party) add_subdirectory(third-party)
add_definitions(-DCHIAKI_VERSION_MAJOR=${CHIAKI_VERSION_MAJOR} -DCHIAKI_VERSION_MINOR=${CHIAKI_VERSION_MINOR} -DCHIAKI_VERSION_PATCH=${CHIAKI_VERSION_PATCH} -DCHIAKI_VERSION=\"${CHIAKI_VERSION}\") add_definitions(-DCHIAKI_VERSION_MAJOR=${CHIAKI_VERSION_MAJOR} -DCHIAKI_VERSION_MINOR=${CHIAKI_VERSION_MINOR} -DCHIAKI_VERSION_PATCH=${CHIAKI_VERSION_PATCH} -DCHIAKI_VERSION=\"${CHIAKI_VERSION}\")

25
cmake/FindNanopb.cmake Normal file
View file

@ -0,0 +1,25 @@
# Provides Nanopb::nanopb and NANOPB_GENERATOR_PY
find_package(nanopb CONFIG)
find_file(NANOPB_GENERATOR_PY nanopb_generator.py PATH_SUFFIXES bin)
find_path(Jerasure_INCLUDE_DIR NAMES pb_encode.h pb_decode.h)
find_library(Jerasure_LIBRARY NAMES Jerasure)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Nanopb
FOUND_VAR Nanopb_FOUND
REQUIRED_VARS
nanopb_FOUND
NANOPB_GENERATOR_PY
)
if(Nanopb_FOUND)
if(NOT TARGET Nanopb::nanopb)
add_library(Nanopb::nanopb ALIAS nanopb::protobuf-nanopb-static)
set_target_properties(Jerasure::Jerasure PROPERTIES
IMPORTED_LOCATION "${Jerasure_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${Jerasure_INCLUDE_DIRS}"
)
endif()
endif()

View file

@ -74,7 +74,6 @@ set(SOURCE_FILES
src/opusdecoder.c) src/opusdecoder.c)
add_subdirectory(protobuf) add_subdirectory(protobuf)
include_directories("${NANOPB_SOURCE_DIR}")
set_source_files_properties(${CHIAKI_LIB_PROTO_SOURCE_FILES} ${CHIAKI_LIB_PROTO_HEADER_FILES} PROPERTIES GENERATED TRUE) set_source_files_properties(${CHIAKI_LIB_PROTO_SOURCE_FILES} ${CHIAKI_LIB_PROTO_HEADER_FILES} PROPERTIES GENERATED TRUE)
include_directories("${CHIAKI_LIB_PROTO_INCLUDE_DIR}") include_directories("${CHIAKI_LIB_PROTO_INCLUDE_DIR}")
@ -113,7 +112,7 @@ else()
target_link_libraries(chiaki-lib OpenSSL::Crypto) target_link_libraries(chiaki-lib OpenSSL::Crypto)
endif() endif()
target_link_libraries(chiaki-lib protobuf-nanopb-static) target_link_libraries(chiaki-lib Nanopb::nanopb)
target_link_libraries(chiaki-lib Jerasure::Jerasure) target_link_libraries(chiaki-lib Jerasure::Jerasure)
if(CHIAKI_LIB_ENABLE_OPUS) if(CHIAKI_LIB_ENABLE_OPUS)

View file

@ -3,7 +3,7 @@ FROM debian:bullseye
RUN apt-get update RUN apt-get update
RUN apt-get -y install git g++ cmake pkg-config \ RUN apt-get -y install git g++ cmake pkg-config \
libjerasure-dev libnanopb-dev libavcodec-dev libopus-dev \ libjerasure-dev nanopb libnanopb-dev libavcodec-dev libopus-dev \
libssl-dev protobuf-compiler python3 python3-protobuf \ libssl-dev protobuf-compiler python3 python3-protobuf \
libevdev-dev libudev-dev \ libevdev-dev libudev-dev \
qt5-default libqt5svg5-dev qtmultimedia5-dev libsdl2-dev qt5-default libqt5svg5-dev qtmultimedia5-dev libsdl2-dev

View file

@ -1,14 +1,16 @@
################## if(NOT CHIAKI_USE_SYSTEM_NANOPB)
# nanopb ##################
################## # nanopb
##################
find_package(PythonInterp 3 REQUIRED) # Make sure nanopb doesn't find Python 2.7 because Python 2 should just die. add_subdirectory(nanopb EXCLUDE_FROM_ALL)
set(NANOPB_GENERATOR_PY "${CMAKE_CURRENT_SOURCE_DIR}/nanopb/generator/nanopb_generator.py" PARENT_SCOPE)
add_subdirectory(nanopb EXCLUDE_FROM_ALL) add_library(nanopb INTERFACE)
set(NANOPB_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/nanopb") target_link_libraries(nanopb INTERFACE protobuf-nanopb-static)
set(NANOPB_SOURCE_DIR "${NANOPB_SOURCE_DIR}" PARENT_SCOPE) target_include_directories(nanopb INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/nanopb")
set(NANOPB_GENERATOR_PY "${NANOPB_SOURCE_DIR}/generator/nanopb_generator.py" PARENT_SCOPE) add_library(Nanopb::nanopb ALIAS nanopb)
endif()
if(NOT CHIAKI_USE_SYSTEM_JERASURE) if(NOT CHIAKI_USE_SYSTEM_JERASURE)
################## ##################