* implement make install
set CMAKE_INSTALL_PREFIX e.g. to /opt to install to /opt/hyperion
set ENABLE_SYSTEM_INSTALL to ON to activate installation
after compiling use
make install
or
make install/strip
(for performance/size optimized binaries - compile in Release to get best performance)

* cleanup cmake files
use
cmake -DINSTALL_PREFIX=/opt/hyperion ..
to install all files to hyperion or
cmake -DINSTALL_PREFIX=/usr/
to install to usr. install folders are linux standard. bin go to bin folder and additionals (effects) go to share/hyperion

* add uninstall target - be patient with that, this will remove files from your system
install service files to share/hyperion - if you want to use them you have to make a symlink to your location of service files

* optimize build release script
install service files into hyperion share folder (services not activated, this must be done by distribution package script)
initial support of cmake option -DPLATFORM= option. This selects platform specific cmake flags. no need for -DENABLE_... options (unless you want some special things)
automatic detect for apple build

* update submodule

* fix cmake error when no platform is given

* initial support for deb,rpm and tgz packages - no usefull content atm!

* make packeages contain usefull stuff

* add license
make packes more functional. package specific install missing yet

* implement debian postinstall

* disable rpm generation until it has a working state

* add hypercon compat

* add posibility for multiple config files. first one found is taken

* remove hyperion comaptlayer
services is not started automaticly

* rework debian postinstall:
- remove /opt compatibility complety. This makes more trouble as it is usefull
- when hyperiond already started, restart it
- cleanup

* add deb package dependencies

* wipe out last support for /opt installation

* change default effect path in config to /usr

* revert service files and config files

* remove last occurences of ENABLE_PROTOBUF
fix cmake warnings and make it ready for cmake 3
fix refactoring of hyperiond.cpp creates no objects for network services


Former-commit-id: 56e3e0d1014999b2555418c7b5a2898ac29fb5f1
This commit is contained in:
redPanther 2016-06-04 19:26:34 +02:00 committed by brindosch
parent e8207cfe31
commit f2e9193987
7 changed files with 98 additions and 107 deletions

View File

@ -4,7 +4,9 @@ project(hyperion)
# define the minimum cmake version (as required by cmake) # define the minimum cmake version (as required by cmake)
cmake_minimum_required(VERSION 2.8) cmake_minimum_required(VERSION 2.8)
#set(CMAKE_TOOLCHAIN_FILE /opt/raspberrypi/Toolchain-RaspberryPi.cmake) IF ( POLICY CMP0026 )
CMAKE_POLICY( SET CMP0026 OLD )
ENDIF()
SET ( DEFAULT_AMLOGIC OFF ) SET ( DEFAULT_AMLOGIC OFF )
@ -55,8 +57,6 @@ message(STATUS "ENABLE_FB = " ${ENABLE_FB})
option(ENABLE_OSX "Enable the osx grabber" ${DEFAULT_OSX} ) option(ENABLE_OSX "Enable the osx grabber" ${DEFAULT_OSX} )
message(STATUS "ENABLE_OSX = " ${ENABLE_OSX}) message(STATUS "ENABLE_OSX = " ${ENABLE_OSX})
set(ENABLE_PROTOBUF ON)
option(ENABLE_SPIDEV "Enable the SPIDEV device" ${DEFAULT_SPIDEV} ) option(ENABLE_SPIDEV "Enable the SPIDEV device" ${DEFAULT_SPIDEV} )
message(STATUS "ENABLE_SPIDEV = " ${ENABLE_SPIDEV}) message(STATUS "ENABLE_SPIDEV = " ${ENABLE_SPIDEV})

View File

@ -18,9 +18,6 @@
// Define to enable the spi-device // Define to enable the spi-device
#cmakedefine ENABLE_TINKERFORGE #cmakedefine ENABLE_TINKERFORGE
// Define to enable PROTOBUF server
#cmakedefine ENABLE_PROTOBUF
// Define to enable the framebuffer grabber // Define to enable the framebuffer grabber
#cmakedefine ENABLE_FB #cmakedefine ENABLE_FB

View File

@ -202,7 +202,7 @@ macro (QT4_ADD_RESOURCES outfiles )
# let's make a configured file and add it as a dependency so cmake is run # let's make a configured file and add it as a dependency so cmake is run
# again when dependencies need to be recomputed. # again when dependencies need to be recomputed.
QT4_MAKE_OUTPUT_FILE("${infile}" "" "qrc.depends" out_depends) QT4_MAKE_OUTPUT_FILE("${infile}" "" "qrc.depends" out_depends)
configure_file("${infile}" "${out_depends}" COPY_ONLY) configure_file("${infile}" "${out_depends}" COPYONLY)
else() else()
# The .qrc file does not exist (yet). Let's add a dependency and hope # The .qrc file does not exist (yet). Let's add a dependency and hope
# that it will be generated later # that it will be generated later

View File

@ -11,43 +11,42 @@ if(ENABLE_WS281XPWM)
external/rpi_ws281x/rpihw.c) external/rpi_ws281x/rpihw.c)
endif(ENABLE_WS281XPWM) endif(ENABLE_WS281XPWM)
if(ENABLE_PROTOBUF) set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared protobuf library")
set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared protobuf library") add_subdirectory(external/protobuf)
add_subdirectory(external/protobuf)
if(CMAKE_CROSSCOMPILING) if(CMAKE_CROSSCOMPILING)
# when crosscompiling import the protoc executable targets from a file generated by a native build # 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") option(IMPORT_PROTOC "Protoc export file (protoc_export.cmake) from a native build" "IMPORT_PROTOC-FILE_NOT_FOUND")
include(${IMPORT_PROTOC}) include(${IMPORT_PROTOC})
else() else()
# export the protoc compiler so it can be used when cross compiling # export the protoc compiler so it can be used when cross compiling
export(TARGETS protoc_compiler FILE "${CMAKE_BINARY_DIR}/protoc_export.cmake") export(TARGETS protoc_compiler FILE "${CMAKE_BINARY_DIR}/protoc_export.cmake")
endif() endif()
# define the include for the protobuf library at the parent scope # 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 "${CMAKE_CURRENT_SOURCE_DIR}/external/protobuf/src")
set(PROTOBUF_INCLUDE_DIRS ${PROTOBUF_INCLUDE_DIRS} PARENT_SCOPE) set(PROTOBUF_INCLUDE_DIRS ${PROTOBUF_INCLUDE_DIRS} PARENT_SCOPE)
# define the protoc executable at the parent scope # define the protoc executable at the parent scope
get_property(PROTOBUF_PROTOC_EXECUTABLE TARGET protoc_compiler PROPERTY LOCATION) get_property(PROTOBUF_PROTOC_EXECUTABLE TARGET protoc_compiler PROPERTY LOCATION)
set(PROTOBUF_PROTOC_EXECUTABLE ${PROTOBUF_PROTOC_EXECUTABLE} PARENT_SCOPE) set(PROTOBUF_PROTOC_EXECUTABLE ${PROTOBUF_PROTOC_EXECUTABLE} PARENT_SCOPE)
message(STATUS "Using protobuf compiler: " ${PROTOBUF_PROTOC_EXECUTABLE}) message(STATUS "Using protobuf compiler: " ${PROTOBUF_PROTOC_EXECUTABLE})
#============================================================================= #=============================================================================
# Copyright 2009 Kitware, Inc. # Copyright 2009 Kitware, Inc.
# Copyright 2009-2011 Philip Lowman <philip@yhbt.com> # Copyright 2009-2011 Philip Lowman <philip@yhbt.com>
# Copyright 2008 Esben Mose Hansen, Ange Optimization ApS # Copyright 2008 Esben Mose Hansen, Ange Optimization ApS
# #
# Distributed under the OSI-approved BSD License (the "License"); # Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details. # see accompanying file Copyright.txt for details.
# #
# This software is distributed WITHOUT ANY WARRANTY; without even the # This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information. # See the License for more information.
#============================================================================= #=============================================================================
# (To distribute this file outside of CMake, substitute the full # (To distribute this file outside of CMake, substitute the full
# License text for the above reference.) # License text for the above reference.)
function(PROTOBUF_GENERATE_CPP SRCS HDRS) function(PROTOBUF_GENERATE_CPP SRCS HDRS)
if(NOT ARGN) if(NOT ARGN)
message(SEND_ERROR "Error: PROTOBUF_GENERATE_CPP() called without any proto files") message(SEND_ERROR "Error: PROTOBUF_GENERATE_CPP() called without any proto files")
return() return()
@ -106,5 +105,4 @@ if(ENABLE_PROTOBUF)
set_source_files_properties(${${SRCS}} ${${HDRS}} PROPERTIES GENERATED TRUE) set_source_files_properties(${${SRCS}} ${${HDRS}} PROPERTIES GENERATED TRUE)
set(${SRCS} ${${SRCS}} PARENT_SCOPE) set(${SRCS} ${${SRCS}} PARENT_SCOPE)
set(${HDRS} ${${HDRS}} PARENT_SCOPE) set(${HDRS} ${${HDRS}} PARENT_SCOPE)
endfunction() endfunction()
endif()

View File

@ -7,9 +7,7 @@ add_subdirectory(hyperion)
add_subdirectory(blackborder) add_subdirectory(blackborder)
add_subdirectory(jsonserver) add_subdirectory(jsonserver)
if (ENABLE_PROTOBUF) add_subdirectory(protoserver)
add_subdirectory(protoserver)
endif ()
if (ENABLE_ZEROCONF) if (ENABLE_ZEROCONF)
add_subdirectory(bonjour) add_subdirectory(bonjour)

View File

@ -9,6 +9,7 @@ target_link_libraries(hyperiond
effectengine effectengine
jsonserver jsonserver
boblightserver boblightserver
protoserver
) )
if (ENABLE_DISPMANX) if (ENABLE_DISPMANX)
@ -31,10 +32,6 @@ if (ENABLE_AMLOGIC)
target_link_libraries(hyperiond amlogic-grabber) target_link_libraries(hyperiond amlogic-grabber)
endif () endif ()
if (ENABLE_PROTOBUF)
target_link_libraries(hyperiond protoserver)
endif ()
if (ENABLE_ZEROCONF) if (ENABLE_ZEROCONF)
target_link_libraries(hyperiond bonjour) target_link_libraries(hyperiond bonjour)
endif() endif()

View File

@ -186,7 +186,7 @@ void startXBMCVideoChecker(const Json::Value &config, XBMCVideoChecker* xbmcVide
} }
} }
void startNetworkServices(const Json::Value &config, Hyperion &hyperion, JsonServer* jsonServer, ProtoServer* protoServer, BoblightServer* boblightServer) void startNetworkServices(const Json::Value &config, Hyperion &hyperion, JsonServer* &jsonServer, ProtoServer* &protoServer, BoblightServer* &boblightServer)
{ {
// Create Json server if configuration is present // Create Json server if configuration is present
if (config.isMember("jsonServer")) if (config.isMember("jsonServer"))
@ -194,6 +194,7 @@ void startNetworkServices(const Json::Value &config, Hyperion &hyperion, JsonSer
const Json::Value & jsonServerConfig = config["jsonServer"]; const Json::Value & jsonServerConfig = config["jsonServer"];
jsonServer = new JsonServer(&hyperion, jsonServerConfig["port"].asUInt()); jsonServer = new JsonServer(&hyperion, jsonServerConfig["port"].asUInt());
std::cout << "INFO: Json server created and started on port " << jsonServer->getPort() << std::endl; std::cout << "INFO: Json server created and started on port " << jsonServer->getPort() << std::endl;
#ifdef ENABLE_ZEROCONF #ifdef ENABLE_ZEROCONF
const Json::Value & deviceConfig = config["device"]; const Json::Value & deviceConfig = config["device"];
const std::string deviceName = deviceConfig.get("name", "").asString(); const std::string deviceName = deviceConfig.get("name", "").asString();
@ -215,6 +216,7 @@ void startNetworkServices(const Json::Value &config, Hyperion &hyperion, JsonSer
const Json::Value & protoServerConfig = config["protoServer"]; const Json::Value & protoServerConfig = config["protoServer"];
protoServer = new ProtoServer(&hyperion, protoServerConfig["port"].asUInt() ); protoServer = new ProtoServer(&hyperion, protoServerConfig["port"].asUInt() );
std::cout << "INFO: Proto server created and started on port " << protoServer->getPort() << std::endl; std::cout << "INFO: Proto server created and started on port " << protoServer->getPort() << std::endl;
#ifdef ENABLE_ZEROCONF #ifdef ENABLE_ZEROCONF
const Json::Value & deviceConfig = config["device"]; const Json::Value & deviceConfig = config["device"];
const std::string deviceName = deviceConfig.get("name", "").asString(); const std::string deviceName = deviceConfig.get("name", "").asString();
@ -369,7 +371,7 @@ void startGrabberFramebuffer(const Json::Value &config, Hyperion &hyperion, Prot
#ifdef ENABLE_OSX #ifdef ENABLE_OSX
void startGrabberOsx(const Json::Value &config, Hyperion &hyperion, ProtoServer * protoServer, XBMCVideoChecker* xbmcVideoChecker, OsxWrapper * osxGrabber) void startGrabberOsx(const Json::Value &config, Hyperion &hyperion, ProtoServer* protoServer, XBMCVideoChecker* xbmcVideoChecker, OsxWrapper * osxGrabber)
{ {
// Construct and start the osx grabber if the configuration is present // Construct and start the osx grabber if the configuration is present
if (config.isMember("osxgrabber") || config.isMember("framegrabber")) if (config.isMember("osxgrabber") || config.isMember("framegrabber"))
@ -472,7 +474,6 @@ int main(int argc, char** argv)
BoblightServer * boblightServer = nullptr; BoblightServer * boblightServer = nullptr;
startNetworkServices(config, hyperion, jsonServer, protoServer, boblightServer); startNetworkServices(config, hyperion, jsonServer, protoServer, boblightServer);
// ---- grabber ----- // ---- grabber -----
#ifdef ENABLE_DISPMANX #ifdef ENABLE_DISPMANX