2016-06-03 16:46:45 +02:00
|
|
|
add_subdirectory(build/hidapi)
|
|
|
|
add_subdirectory(build/jsoncpp)
|
|
|
|
add_subdirectory(build/tinkerforge)
|
|
|
|
|
|
|
|
if(ENABLE_WS281XPWM)
|
|
|
|
add_library(ws281x
|
|
|
|
external/rpi_ws281x/mailbox.c external/rpi_ws281x/ws2811.c
|
|
|
|
external/rpi_ws281x/pwm.c external/rpi_ws281x/dma.c
|
|
|
|
external/rpi_ws281x/rpihw.c)
|
2016-06-13 08:11:57 +02:00
|
|
|
endif()
|
2016-06-03 16:46:45 +02:00
|
|
|
|
2016-09-02 07:41:27 +02:00
|
|
|
set(USE_SYSTEM_PROTO_LIBS ${DEFAULT_USE_SYSTEM_PROTO_LIBS} CACHE BOOL "use protobuf library from system")
|
2016-06-03 16:46:45 +02:00
|
|
|
|
2016-06-13 08:11:57 +02:00
|
|
|
if (USE_SYSTEM_PROTO_LIBS)
|
|
|
|
find_package(Protobuf REQUIRED)
|
|
|
|
include_directories(${PROTOBUF_INCLUDE_DIRS})
|
|
|
|
else ()
|
|
|
|
set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared protobuf library")
|
|
|
|
add_subdirectory(external/protobuf)
|
2016-06-03 16:46:45 +02:00
|
|
|
|
2016-06-13 08:11:57 +02:00
|
|
|
if(CMAKE_CROSSCOMPILING)
|
|
|
|
# when crosscompiling import the protoc executable targets from a file generated by a native build
|
|
|
|
option(IMPORT_PROTOC "Protoc export file (protoc_export.cmake) from a native build" "IMPORT_PROTOC-FILE_NOT_FOUND")
|
|
|
|
include(${IMPORT_PROTOC})
|
|
|
|
else()
|
|
|
|
# export the protoc compiler so it can be used when cross compiling
|
|
|
|
export(TARGETS protoc_compiler FILE "${CMAKE_BINARY_DIR}/protoc_export.cmake")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
# define the include for the protobuf library at the parent scope
|
|
|
|
set(PROTOBUF_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/external/protobuf/src")
|
|
|
|
set(PROTOBUF_INCLUDE_DIRS ${PROTOBUF_INCLUDE_DIRS} PARENT_SCOPE)
|
|
|
|
|
|
|
|
# define the protoc executable at the parent scope
|
|
|
|
get_property(PROTOBUF_PROTOC_EXECUTABLE TARGET protoc_compiler PROPERTY LOCATION)
|
|
|
|
set(PROTOBUF_PROTOC_EXECUTABLE ${PROTOBUF_PROTOC_EXECUTABLE} PARENT_SCOPE)
|
|
|
|
endif()
|
2016-06-03 16:46:45 +02:00
|
|
|
|
2016-06-04 19:26:34 +02:00
|
|
|
message(STATUS "Using protobuf compiler: " ${PROTOBUF_PROTOC_EXECUTABLE})
|
2016-06-03 16:46:45 +02:00
|
|
|
|
2016-06-04 19:26:34 +02:00
|
|
|
#=============================================================================
|
|
|
|
# Copyright 2009 Kitware, Inc.
|
|
|
|
# Copyright 2009-2011 Philip Lowman <philip@yhbt.com>
|
|
|
|
# Copyright 2008 Esben Mose Hansen, Ange Optimization ApS
|
|
|
|
#
|
|
|
|
# Distributed under the OSI-approved BSD License (the "License");
|
|
|
|
# see accompanying file Copyright.txt for details.
|
|
|
|
#
|
|
|
|
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
|
|
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
# See the License for more information.
|
|
|
|
#=============================================================================
|
|
|
|
# (To distribute this file outside of CMake, substitute the full
|
|
|
|
# License text for the above reference.)
|
|
|
|
function(PROTOBUF_GENERATE_CPP SRCS HDRS)
|
|
|
|
if(NOT ARGN)
|
|
|
|
message(SEND_ERROR "Error: PROTOBUF_GENERATE_CPP() called without any proto files")
|
|
|
|
return()
|
|
|
|
endif()
|
2016-06-03 16:46:45 +02:00
|
|
|
|
2016-06-04 19:26:34 +02:00
|
|
|
if(PROTOBUF_GENERATE_CPP_APPEND_PATH)
|
|
|
|
# Create an include path for each file specified
|
|
|
|
foreach(FIL ${ARGN})
|
|
|
|
get_filename_component(ABS_FIL ${FIL} ABSOLUTE)
|
|
|
|
get_filename_component(ABS_PATH ${ABS_FIL} PATH)
|
|
|
|
list(FIND _protobuf_include_path ${ABS_PATH} _contains_already)
|
|
|
|
if(${_contains_already} EQUAL -1)
|
|
|
|
list(APPEND _protobuf_include_path -I ${ABS_PATH})
|
|
|
|
endif()
|
|
|
|
endforeach()
|
|
|
|
else()
|
|
|
|
set(_protobuf_include_path -I ${CMAKE_CURRENT_SOURCE_DIR})
|
|
|
|
endif()
|
2016-06-03 16:46:45 +02:00
|
|
|
|
2016-06-04 19:26:34 +02:00
|
|
|
if(DEFINED PROTOBUF_IMPORT_DIRS)
|
|
|
|
foreach(DIR ${PROTOBUF_IMPORT_DIRS})
|
|
|
|
get_filename_component(ABS_PATH ${DIR} ABSOLUTE)
|
|
|
|
list(FIND _protobuf_include_path ${ABS_PATH} _contains_already)
|
|
|
|
if(${_contains_already} EQUAL -1)
|
|
|
|
list(APPEND _protobuf_include_path -I ${ABS_PATH})
|
|
|
|
endif()
|
|
|
|
endforeach()
|
|
|
|
endif()
|
2016-06-03 16:46:45 +02:00
|
|
|
|
2016-06-13 08:11:57 +02:00
|
|
|
if(CMAKE_CROSSCOMPILING OR USE_SYSTEM_PROTO_LIBS)
|
2016-06-04 19:26:34 +02:00
|
|
|
set(PROTOC_DEPENDENCY ${PROTOBUF_PROTOC_EXECUTABLE})
|
|
|
|
else()
|
|
|
|
set(PROTOC_DEPENDENCY protoc_compiler)
|
|
|
|
endif()
|
2016-06-03 16:46:45 +02:00
|
|
|
|
2016-06-04 19:26:34 +02:00
|
|
|
set(${SRCS})
|
|
|
|
set(${HDRS})
|
|
|
|
foreach(FIL ${ARGN})
|
|
|
|
get_filename_component(ABS_FIL ${FIL} ABSOLUTE)
|
|
|
|
get_filename_component(FIL_WE ${FIL} NAME_WE)
|
2016-06-03 16:46:45 +02:00
|
|
|
|
2016-06-04 19:26:34 +02:00
|
|
|
list(APPEND ${SRCS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.cc")
|
|
|
|
list(APPEND ${HDRS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.h")
|
2016-06-03 16:46:45 +02:00
|
|
|
|
2016-06-04 19:26:34 +02:00
|
|
|
add_custom_command(
|
|
|
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.cc"
|
|
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.h"
|
|
|
|
COMMAND ${PROTOBUF_PROTOC_EXECUTABLE}
|
|
|
|
ARGS --cpp_out ${CMAKE_CURRENT_BINARY_DIR} ${_protobuf_include_path} ${ABS_FIL}
|
|
|
|
DEPENDS ${ABS_FIL} ${PROTOC_DEPENDENCY}
|
|
|
|
COMMENT "Running C++ protocol buffer compiler on ${FIL}"
|
|
|
|
VERBATIM
|
|
|
|
)
|
|
|
|
endforeach()
|
2016-06-03 16:46:45 +02:00
|
|
|
|
2016-06-04 19:26:34 +02:00
|
|
|
set_source_files_properties(${${SRCS}} ${${HDRS}} PROPERTIES GENERATED TRUE)
|
|
|
|
set(${SRCS} ${${SRCS}} PARENT_SCOPE)
|
|
|
|
set(${HDRS} ${${HDRS}} PARENT_SCOPE)
|
|
|
|
endfunction()
|