Page 1 of 1

How to compile Domoticz sources for Synology

Posted: Monday 04 May 2020 15:03
by Antori91
Hello,

Following the (temporary?) cessation of Jadahl work, could you please Jadahl (or someone else) post the recipe book to cross-compile the Domoticz sources for installation on Synology platform.

Re: How to compile Domoticz sources for Synology

Posted: Thursday 07 May 2020 9:27
by Alcloud

Re: How to compile Domoticz sources for Synology

Posted: Thursday 07 May 2020 17:22
by Antori91
There is also this Synology whitepaper. The platform recommended to cross-compile is a Linux 64 bits
https://global.download.synology.com/do ... de_6_0.pdf

Re: How to compile Domoticz sources for Synology

Posted: Tuesday 26 May 2020 13:51
by Antori91
Hello,

I've played a little bit with this Synology toolkit described in the whitepaper. I've been able to install the toolkit and compile / generate a package (but not yet sign it). The corresponding source files are C code given as demo package by Synology. This way seems promising even if it is not straight forward because the whitepaper doesn't seem up to date with the last versions of the toolkit. It seems a number of procedures mentioned have to be slightly adapted (the package sign procedure for example).

I do not know if others have tried this toolkit or other ways/tools. If so, interesting to share the feedback.

Code: Select all

------@DEBIAN-SVR:/toolkit/source$ sudo ../pkgscripts/PkgCreate.py -x0 -S -c minimalPkg
[sudo] Mot de passe de ------ : 

============================================================
                   Parse argument result                    
------------------------------------------------------------
platforms    : None
env_section  : default
env_version  : None
dep_level    : 0
branch       : master
suffix       : 
collect      : True
update       : True
link         : True
build        : True
install      : True
only_install : False
sign         : False
build_opt    : 
install_opt  : 
print_log    : False
sdk_ver      : 6.0
package      : minimalPkg

Processing [6.2-25301]: armada38x

============================================================
              Start to run "Traverse project"               
------------------------------------------------------------
[INFO] Branch projects: minimalPkg
[INFO] Tag projects: 
[INFO] Reference projects: 
[INFO] Reference tag projects: 

============================================================
                Start to run "Link Project"                 
------------------------------------------------------------
Link /toolkit/pkgscripts -> /toolkit/build_env/ds.armada38x-6.2/pkgscripts
Link /toolkit/source/minimalPkg -> /toolkit/build_env/ds.armada38x-6.2/source/minimalPkg

============================================================
                Start to run "Build Package"                
------------------------------------------------------------
[armada38x] set -o pipefail; env PackageName=minimalPkg /pkgscripts-ng/SynoBuild --armada38x -c --min-sdk 6.0 minimalPkg 2>&1 | tee logs.build

============================================================
               Start to run "Install Package"               
------------------------------------------------------------
[armada38x] set -o pipefail; env PackageName=minimalPkg /pkgscripts-ng/SynoInstall  --with-debug minimalPkg 2>&1 | tee logs.install

============================================================
               Start to run "Install Package"               
------------------------------------------------------------
[armada38x] set -o pipefail; env PackageName=minimalPkg /pkgscripts-ng/SynoInstall  minimalPkg 2>&1 | tee logs.install

============================================================
               Start to run "Collect package"               
------------------------------------------------------------
/toolkit/build_env/ds.armada38x-6.2/image/packages/minimalPkg-armada38x-1.0.0000_debug.spk -> /toolkit/result_spk/minimalPkg-1.0.0000
/toolkit/build_env/ds.armada38x-6.2/image/packages/minimalPkg-armada38x-1.0.0000.spk -> /toolkit/result_spk/minimalPkg-1.0.0000

============================================================
                    Time Cost Statistic                     
------------------------------------------------------------
00:00:00: Traverse project
00:00:00: Link Project
00:00:02: Build Package
00:00:01: Install Package
00:00:01: Install Package
00:00:00: Collect package

[SUCCESS] ../pkgscripts/PkgCreate.py -x0 -S -c minimalPkg finished.


Re: How to compile Domoticz sources for Synology

Posted: Monday 22 June 2020 15:21
by Antori91

Re: How to compile Domoticz sources for Synology

Posted: Wednesday 15 July 2020 15:08
by Antori91
Some news about my tests regarding Synology domoticz package generation. I succeeded to generate a package using the synocommunity spksrc tool for one (braswell) of the 64 bits Synology architecture.

Once the tool installed in my user home directory (i.e. ~), here is the files edited:

1. Version 1.72 of boost library used by modifying version number in Makefile and also PLIST in ~/spksrc/cross/boost
Makefile

Code: Select all

PKG_NAME = boost
PKG_VERS = 1.72.0
PKG_EXT = tar.bz2
PKG_DIR = $(PKG_NAME)_$(subst .,_,$(PKG_VERS))
PKG_DIST_NAME = $(PKG_DIR).$(PKG_EXT)
PKG_DIST_SITE = http://sourceforge.net/projects/$(PKG_NAME)/files/$(PKG_NAME)/$(PKG_VERS)
PLIST

Code: Select all

lnk:lib/libboost_*.so
lib:lib/libboost_*.so.1.72.0
2. ~/spksrc/cross/domoticz/Makefile

Code: Select all

PKG_NAME = domoticz
PKG_VERS = 2020.2
PKG_EXT = tar.gz
PKG_DIST_NAME = $(PKG_VERS).$(PKG_EXT)
PKG_DIST_SITE = https://github.com/domoticz/domoticz/archive
PKG_DIST_FILE = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT)
PKG_DIR = $(PKG_NAME)-$(PKG_VERS)

DEPENDS = cross/boost cross/curl cross/python3 cross/lua

HOMEPAGE = http://www.domoticz.com/
COMMENT  = Domoticz is a Home Automation System.
LICENSE  = GPL-3.0

CONFIGURE_TARGET = domoticz_configure
INSTALL_TARGET = domoticz_install

BOOST_LIBRARIES = system thread date_time
ENV += BOOST_LIBRARIES="$(BOOST_LIBRARIES)" CMAKE_INCLUDE_PATH="$(STAGING_INSTALL_PREFIX)/include" CMAKE_LIBRARY_PATH="$(STAGING_INSTALL_PREFIX)/lib" PCH_COMPILE_FLAGS="$(CFLAGS)"

include ../../mk/spksrc.cross-cc.mk

.PHONY: domoticz_configure
domoticz_configure:
	$(RUN) cmake CMakeLists.txt

.PHONY: domoticz_install
domoticz_install:
	@mkdir -p $(STAGING_INSTALL_PREFIX)/bin
	@$(RUN) install -m 755 domoticz $(STAGING_INSTALL_PREFIX)/bin
	@$(RUN) cp -R www $(STAGING_INSTALL_PREFIX)
	@$(RUN) cp -R Config $(STAGING_INSTALL_PREFIX)
	@$(RUN) cp -R scripts $(STAGING_INSTALL_PREFIX)
	@mkdir -p $(STAGING_INSTALL_PREFIX)/var
3. ~/spksrc/cross/domoticz/work-braswell-6.1/domoticz-2002.2/CMakeLists.txt

Code: Select all

#set to minimum version that supports clean build
cmake_minimum_required(VERSION 3.16.0)

project(domoticz)

INCLUDE(CheckIncludeFile)
INCLUDE(CheckIncludeFiles)
INCLUDE(InstallRequiredSystemLibraries)
INCLUDE(TestBigEndian)

### DEPENDENCY VERSIONS
#
#
## required min. libBoost version
SET(DOMO_MIN_LIBBOOST_VERSION 1.66.0)
##

### USER-SETTABLE OPTIONS
#
#

# Bundled libraries
option(USE_BUILTIN_JSONCPP "Use builtin JSonCPP" YES)
option(USE_BUILTIN_MINIZIP "Use builtin Minizip" YES)
option(USE_BUILTIN_MQTT "Use builtin Mosquitto library" YES)
option(USE_BUILTIN_SQLITE "Use builtin sqlite library" YES)

# Optional dependencies
option(USE_PYTHON "Use Python for Plugins and Event-Scripts" YES)
option(INCLUDE_LINUX_I2C "Include I2C support" YES)
option(INCLUDE_SPI "Include SPI support" YES)
option(WITH_LIBUSB "Enable libusb support" YES)

# Link static or shared, external dependencies
option(USE_LUA_STATIC "Link LUA static" YES)
option(USE_OPENSSL_STATIC "Link OpenSSL static" NO)
option(USE_STATIC_BOOST "Build with static BOOST libraries" YES)
option(USE_STATIC_OPENZWAVE "Build with static OpenZwave libraries" YES)

# Developer-oriented options
option(USE_PRECOMPILED_HEADER "Use precompiled header feature to speed up build time " YES)
option(GIT_SUBMODULE "Check submodules during build" ON)


### COMPILER SETTINGS
#
#
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  set(CMAKE_CXX_STANDARD 11)
  set(CMAKE_CXX_STANDARD_REQUIRED ON)
  set(CXX_EXTENSIONS NO)
endif()

IF(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-switch -Wno-parentheses-equality -Wno-deprecated-declarations -Wno-tautological-compare -Wno-unused-value -Wno-comment -Wno-unsequenced -Wno-logical-op-parentheses -Wno-literal-conversion")
ENDIF()
IF(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
ENDIF()
IF(CMAKE_SYSTEM_NAME STREQUAL "NetBSD")
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
ENDIF()
IF(CMAKE_COMPILER_IS_GNUCXX)
  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wno-psabi -rdynamic")
  #SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-switch")
  #ADD_DEFINITIONS( -Wall -O0 -ggdb )
  #ADD_DEFINITIONS( -Wfatal-errors -Wformat=2 -Werror=format-security )
ENDIF()


### VERSIONING SUPPORT
#
#

MACRO(History_GET_REVISION variable)
  IF(EXISTS ${CMAKE_SOURCE_DIR}/History.txt)
    MESSAGE(STATUS "Read ProjectRevision from History.txt")
    CMAKE_POLICY(SET CMP0007 NEW)
    FILE(STRINGS ${CMAKE_SOURCE_DIR}/History.txt AppVersionContent)
    LIST(GET AppVersionContent 0 AppVersionContent)
    STRING(REPLACE " " ";" AppVersionContent ${AppVersionContent})
    LIST(GET AppVersionContent 1 AppVersionContent)
    STRING(REPLACE "." ";" AppVersionContent ${AppVersionContent})
    LIST(GET AppVersionContent 1 ${variable})
  ELSE(EXISTS ${CMAKE_SOURCE_DIR}/History.txt)
    MESSAGE(STATUS "Failed to get ProjectRevision from History.txt, set it to 0")
    set (${variable} 0)
  ENDIF(EXISTS ${CMAKE_SOURCE_DIR}/History.txt)
ENDMACRO(History_GET_REVISION)

MACRO(Gitversion_GET_REVISION dir variable)
  EXECUTE_PROCESS(COMMAND ${GIT_EXECUTABLE} --git-dir ./.git rev-list HEAD --count
    WORKING_DIRECTORY ${dir}
    OUTPUT_VARIABLE ${variable}
    OUTPUT_STRIP_TRAILING_WHITESPACE)
ENDMACRO(Gitversion_GET_REVISION)

find_package(Git QUIET)

Gitversion_GET_REVISION("${CMAKE_SOURCE_DIR}" ProjectRevision)
IF(NOT ProjectRevision)
  MESSAGE(STATUS "Failed to get ProjectRevision from git")
  History_GET_REVISION(ProjectRevision)
ELSE(NOT ProjectRevision)
  MATH(EXPR ProjectRevision "${ProjectRevision}+2107")
ENDIF(NOT ProjectRevision)


### SUBMODULE / BUNDLED SOFTWARE
#
#
if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
# Update submodules as needed
    if(GIT_SUBMODULE)
        message(STATUS "Submodule update")
    execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive
                        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
                        RESULT_VARIABLE GIT_SUBMOD_RESULT)
        if(NOT GIT_SUBMOD_RESULT EQUAL "0")
            message(FATAL_ERROR "git submodule update --init failed with ${GIT_SUBMOD_RESULT}, please checkout submodules")
        endif()
    endif()
endif()

if(USE_BUILTIN_JSONCPP AND NOT EXISTS "${PROJECT_SOURCE_DIR}/extern/jsoncpp/CMakeLists.txt")
  message(FATAL_ERROR "The submodules were not downloaded! GIT_SUBMODULE was turned off or failed. Please update submodules and try again.")
endif()
if(USE_BUILTIN_MINIZIP AND NOT EXISTS "${PROJECT_SOURCE_DIR}/extern/minizip/CMakeLists.txt")
  message(FATAL_ERROR "The submodules were not downloaded! GIT_SUBMODULE was turned off or failed. Please update submodules and try again.")
endif()
if(USE_BUILTIN_MQTT AND NOT EXISTS "${PROJECT_SOURCE_DIR}/extern/mosquitto/CMakeLists.txt")
  message(FATAL_ERROR "The submodules were not downloaded! GIT_SUBMODULE was turned off or failed. Please update submodules and try again.")
endif()
if(USE_BUILTIN_SQLITE AND NOT EXISTS "${PROJECT_SOURCE_DIR}/extern/sqlite-amalgamation/CMakeLists.txt")
  message(FATAL_ERROR "The submodules were not downloaded! GIT_SUBMODULE was turned off or failed. Please update submodules and try again.")
endif()

# Target
set(
domoticz_SRCS
main/stdafx.cpp
main/BaroForecastCalculator.cpp
main/CmdLine.cpp
main/Camera.cpp
main/domoticz.cpp
main/dzVents.cpp
main/EventSystem.cpp
main/EventsPythonModule.cpp
main/EventsPythonDevice.cpp
main/Helper.cpp
main/HTMLSanitizer.cpp
main/IFTTT.cpp
main/json_helper.cpp
main/localtime_r.cpp
main/Logger.cpp
main/LuaCommon.cpp
main/LuaHandler.cpp
main/LuaTable.cpp
main/mainworker.cpp
main/mosquitto_helper.cpp
main/NotificationObserver.cpp
main/NotificationSystem.cpp
main/RFXNames.cpp
main/Scheduler.cpp
main/SignalHandler.cpp
main/SQLHelper.cpp
main/SunRiseSet.cpp
main/TrendCalculator.cpp
main/WebServer.cpp
main/WebServerHelper.cpp
main/WindCalculation.cpp
push/BasePush.cpp
push/FibaroPush.cpp
push/GooglePubSubPush.cpp
push/HttpPush.cpp
push/InfluxPush.cpp
push/WebsocketPush.cpp
httpclient/HTTPClient.cpp
httpclient/UrlEncode.cpp
hardware/1Wire.cpp
hardware/1Wire/1WireByOWFS.cpp
hardware/1Wire/1WireByKernel.cpp
hardware/1Wire/1WireCommon.cpp
hardware/1Wire/1WireForWindows.cpp
hardware/AccuWeather.cpp
hardware/AnnaThermostat.cpp
hardware/Arilux.cpp
hardware/ASyncSerial.cpp
hardware/ASyncTCP.cpp
hardware/AtagOne.cpp
hardware/BleBox.cpp
hardware/Buienradar.cpp
hardware/cayenne_lpp/CayenneLPP_Dec.cpp
hardware/ColorSwitch.cpp
hardware/Comm5Serial.cpp
hardware/Comm5SMTCP.cpp
hardware/Comm5TCP.cpp
hardware/csocket.cpp
hardware/CurrentCostMeterBase.cpp
hardware/CurrentCostMeterSerial.cpp
hardware/CurrentCostMeterTCP.cpp
hardware/Daikin.cpp
hardware/DarkSky.cpp
hardware/DavisLoggerSerial.cpp
hardware/DenkoviDevices.cpp
hardware/DenkoviUSBDevices.cpp
hardware/DenkoviTCPDevices.cpp
hardware/DomoticzHardware.cpp
hardware/DomoticzInternal.cpp
hardware/DomoticzTCP.cpp
hardware/Dummy.cpp
hardware/EcoCompteur.cpp
hardware/EcoDevices.cpp
hardware/eHouseTCP.cpp
hardware/eHouse/EhouseEvents.cpp
hardware/eHouse/EhouseTcpClient.cpp
hardware/eHouse/EhouseUdpListener.cpp
hardware/EnOceanESP2.cpp
hardware/EnOceanESP3.cpp
hardware/EnphaseAPI.cpp
hardware/Ec3kMeterTCP.cpp
hardware/eVehicles/TeslaApi.cpp
hardware/eVehicles/eVehicle.cpp
hardware/EvohomeBase.cpp
hardware/EvohomeRadio.cpp
hardware/EvohomeScript.cpp
hardware/EvohomeSerial.cpp
hardware/EvohomeTCP.cpp
hardware/EvohomeWeb.cpp
hardware/ETH8020.cpp
hardware/FritzboxTCP.cpp
hardware/GoodweAPI.cpp
hardware/Gpio.cpp
hardware/GpioPin.cpp
hardware/HardwareMonitor.cpp
hardware/HarmonyHub.cpp
hardware/Honeywell.cpp
hardware/HEOS.cpp
hardware/I2C.cpp
hardware/ICYThermostat.cpp
hardware/InComfort.cpp
hardware/KMTronicBase.cpp
hardware/KMTronic433.cpp
hardware/KMTronicSerial.cpp
hardware/KMTronicTCP.cpp
hardware/KMTronicUDP.cpp
hardware/Kodi.cpp
hardware/Limitless.cpp
hardware/LogitechMediaServer.cpp
hardware/Meteostick.cpp
hardware/MochadTCP.cpp
hardware/MQTT.cpp
hardware/MultiFun.cpp
hardware/MySensorsBase.cpp
hardware/MySensorsSerial.cpp
hardware/MySensorsTCP.cpp
hardware/MySensorsMQTT.cpp
hardware/NefitEasy.cpp
hardware/Nest.cpp
hardware/NestOAuthAPI.cpp
hardware/Netatmo.cpp
hardware/HttpPoller.cpp
hardware/OctoPrintMQTT.cpp
hardware/OnkyoAVTCP.cpp
hardware/OpenWeatherMap.cpp
hardware/OpenWebNetTCP.cpp
hardware/OpenWebNetUSB.cpp
hardware/openwebnet/bt_openwebnet.cpp
hardware/OpenZWave.cpp
hardware/openzwave/control_panel/ozwcp.cpp
hardware/openzwave/control_panel/zwavelib.cpp
hardware/OTGWBase.cpp
hardware/OTGWSerial.cpp
hardware/OTGWTCP.cpp
hardware/PanasonicTV.cpp
hardware/P1MeterBase.cpp
hardware/P1MeterSerial.cpp
hardware/P1MeterTCP.cpp
hardware/PhilipsHue/PhilipsHue.cpp
hardware/PhilipsHue/PhilipsHueHelper.cpp
hardware/PhilipsHue/PhilipsHueSensors.cpp
hardware/PiFace.cpp
hardware/Pinger.cpp
hardware/PVOutput_Input.cpp
hardware/RAVEn.cpp
hardware/Rego6XXSerial.cpp
hardware/RelayNet.cpp
hardware/RFLinkBase.cpp
hardware/RFLinkSerial.cpp
hardware/RFLinkTCP.cpp
hardware/RFXBase.cpp
hardware/RFXComSerial.cpp
hardware/RFXComTCP.cpp
hardware/Rtl433.cpp
hardware/S0MeterBase.cpp
hardware/S0MeterSerial.cpp
hardware/S0MeterTCP.cpp
hardware/SatelIntegra.cpp
hardware/SBFSpot.cpp
hardware/serial/serial.cpp
hardware/serial/impl/unix.cpp
hardware/SolarEdgeAPI.cpp
hardware/SolarMaxTCP.cpp
hardware/Sterbox.cpp
hardware/SysfsGpio.cpp
hardware/Tado.cpp
hardware/TCPProxy/tcpproxy_server.cpp
hardware/TE923.cpp
hardware/TE923Tool.cpp
hardware/TeleinfoBase.cpp
hardware/TeleinfoSerial.cpp
hardware/Tellstick.cpp
hardware/TellstickFactory.cpp
hardware/Thermosmart.cpp
hardware/ToonThermostat.cpp
hardware/TTNMQTT.cpp
hardware/USBtin.cpp
hardware/USBtin_MultiblocV8.cpp
hardware/VolcraftCO20.cpp
hardware/Winddelen.cpp
hardware/WOL.cpp
hardware/Wunderground.cpp
hardware/XiaomiGateway.cpp
hardware/Yeelight.cpp
hardware/YouLess.cpp
hardware/ZiBlueBase.cpp
hardware/ZiBlueSerial.cpp
hardware/ZiBlueTCP.cpp
hardware/ZWaveBase.cpp
hardware/plugins/DelayedLink.cpp
hardware/plugins/Plugins.cpp
hardware/plugins/PluginManager.cpp
hardware/plugins/PluginProtocols.cpp
hardware/plugins/PluginTransports.cpp
hardware/plugins/PythonObjects.cpp
notifications/NotificationBase.cpp
notifications/NotificationBrowser.cpp
notifications/NotificationEmail.cpp
notifications/NotificationFCM.cpp
notifications/NotificationHelper.cpp
notifications/NotificationHTTP.cpp
notifications/NotificationKodi.cpp
notifications/NotificationLogitechMediaServer.cpp
notifications/NotificationPushbullet.cpp
notifications/NotificationProwl.cpp
notifications/NotificationPushover.cpp
notifications/NotificationPushsafer.cpp
notifications/NotificationPushalot.cpp
notifications/NotificationSMS.cpp
notifications/NotificationTelegram.cpp
smtpclient/SMTPClient.cpp
tcpserver/TCPClient.cpp
tcpserver/TCPServer.cpp
webserver/Base64.cpp
webserver/connection.cpp
webserver/connection_manager.cpp
webserver/cWebem.cpp
webserver/fastcgi.cpp
webserver/mime_types.cpp
webserver/proxycereal.cpp
webserver/proxyclient.cpp
webserver/reply.cpp
webserver/request_handler.cpp
webserver/request_parser.cpp
webserver/server.cpp
webserver/Websockets.cpp
webserver/WebsocketHandler.cpp
tinyxpath/action_store.cpp
tinyxpath/htmlutil.cpp
tinyxpath/lex_util.cpp
tinyxpath/node_set.cpp
tinyxpath/tinystr.cpp
tinyxpath/tinyxml.cpp
tinyxpath/tinyxmlerror.cpp
tinyxpath/tinyxmlparser.cpp
tinyxpath/tokenlist.cpp
tinyxpath/xml_util.cpp
tinyxpath/xpath_expression.cpp
tinyxpath/xpath_processor.cpp
tinyxpath/xpath_stream.cpp
tinyxpath/xpath_stack.cpp
tinyxpath/xpath_static.cpp
tinyxpath/xpath_syntax.cpp
)

add_executable(domoticz ${domoticz_SRCS})

#
# LUA
#
if(USE_LUA_STATIC)
  find_library(LUA_LIBRARIES NAMES liblua.a)
ELSE(USE_LUA_STATIC)
  find_library(LUA_LIBRARIES NAMES liblua5.3.so)
ENDIF(USE_LUA_STATIC)
find_path(LUA_INCLUDE_DIRS NAMES lua5.3/lua.h)
IF(LUA_LIBRARIES AND LUA_INCLUDE_DIRS)
  MESSAGE(STATUS "LUA library found at: ${LUA_LIBRARIES}")
  INCLUDE_DIRECTORIES(${LUA_INCLUDE_DIRS}/lua5.3)
ELSE(LUA_LIBRARIES AND LUA_INCLUDE_DIRS)
  # try using find_package()
  find_package(Lua "5.3" REQUIRED)
  IF(LUA_FOUND)
    MESSAGE(STATUS "LUA library found at  : ${LUA_LIBRARIES}")
    MESSAGE(STATUS "LUA includes found at : ${LUA_INCLUDE_DIR}")
    INCLUDE_DIRECTORIES(${LUA_INCLUDE_DIR}) 
  ELSE(LUA_FOUND)
    MESSAGE(FATAL_ERROR "LUA 5.3 not found! use sudo apt-get install liblua5.3-dev")
  ENDIF(LUA_FOUND)
ENDIF(LUA_LIBRARIES AND LUA_INCLUDE_DIRS)

IF(USE_PYTHON)
  find_package(PythonInterp 3.4)
  find_package(PythonLibs 3.4)
  IF(PYTHONLIBS_FOUND)
    MESSAGE(STATUS "Python3 includes found at: ${PYTHON_INCLUDE_PATH}")
    INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH})
    add_definitions(-DENABLE_PYTHON)
  ELSE(PYTHONLIBS_FOUND)
    MESSAGE(FATAL_ERROR "Python3 not found on your system, use USE_PYTHON=NO or sudo apt-get install python3-dev)")
  ENDIF(PYTHONLIBS_FOUND)
ENDIF(USE_PYTHON)

SET(EXECUTABLE_OUTPUT_PATH "" CACHE INTERNAL
  "Where to put the executables for Domoticz"
  )

CHECK_INCLUDE_FILE (execinfo.h HAVE_EXECINFO_H)

IF(HAVE_EXECINFO_H)
  # FreeBSD has to include libexecinfo
  IF(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
    find_library(EXECINFO_LIBRARIES NAMES libexecinfo.so)
    IF(EXECINFO_LIBRARIES)
      ADD_DEFINITIONS(-DHAVE_EXECINFO_H)
    ENDIF()
  ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "NetBSD")
    find_library(EXECINFO_LIBRARIES NAMES libexecinfo.so)
    IF(EXECINFO_LIBRARIES)
      ADD_DEFINITIONS(-DHAVE_EXECINFO_H)
    ENDIF()
  ELSE()
    ADD_DEFINITIONS(-DHAVE_EXECINFO_H)
  ENDIF()
ENDIF(HAVE_EXECINFO_H)

IF (INCLUDE_LINUX_I2C)
  CHECK_INCLUDE_FILES ("sys/types.h;linux/i2c-dev.h;linux/i2c.h" HAVE_LINUX_I2C_H)
  IF (HAVE_LINUX_I2C_H)
    message(STATUS "Building with I2C support")
    add_definitions(-DHAVE_LINUX_I2C)
  ELSE()
    message(WARNING "I2C support disabled: headers not found!")
  ENDIF (HAVE_LINUX_I2C_H)
ENDIF (INCLUDE_LINUX_I2C)

IF (INCLUDE_SPI)
  CHECK_INCLUDE_FILES ("sys/types.h;linux/spi/spidev.h" HAVE_LINUX_SPI_H)
  IF (HAVE_LINUX_SPI_H)
    message(STATUS "Building with SPI support")
    add_definitions(-DHAVE_LINUX_SPI)
  ELSE()
    message(WARNING "SPI support disabled: headers not found!")
  ENDIF (HAVE_LINUX_SPI_H)
ENDIF (INCLUDE_SPI)

FIND_PROGRAM(GIT_EXECUTABLE git
  DOC "git command line client")

include_directories(${CMAKE_SOURCE_DIR}/main)

# a custom target that is always built
ADD_CUSTOM_TARGET(revisiontag ALL)

# creates appversion.h using cmake script
ADD_CUSTOM_COMMAND(TARGET revisiontag COMMAND ${CMAKE_COMMAND}
   -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}
   -P ${CMAKE_CURRENT_SOURCE_DIR}/getgit.cmake)

MESSAGE(STATUS "###########################")
MESSAGE(STATUS "Compiling Revision #${ProjectRevision}")
MESSAGE(STATUS "###########################")

# The version number.
set (domoticz_VERSION_MAJOR 2020)
set (domoticz_VERSION_MINOR 1)
set (domoticz_VERSION_PATCH ${ProjectRevision})

# explicitly say that the executable depends on the revisiontag
add_dependencies(domoticz revisiontag)

TEST_BIG_ENDIAN(BIGENDIAN)
IF(${BIGENDIAN})
     ADD_DEFINITIONS(-DIS_BIG_ENDIAN)
ENDIF(${BIGENDIAN})

## Link libraries

# jsoncpp
if(USE_BUILTIN_JSONCPP)
  set(JSONCPP_LIB_BUILD_SHARED OFF CACHE BOOL "Enable jsoncpp shared library" FORCE)
  set(JSONCPP_WITH_TESTS OFF CACHE BOOL "Enable jsoncpp tests" FORCE)
  set(JSONCPP_WITH_POST_BUILD_UNITTEST OFF CACHE BOOL "Enable jsoncpp post build unit tests" FORCE)
  set(JSONCPP_WITH_PKGCONFIG_SUPPORT OFF CACHE BOOL "Enable jsoncpp pkgconfig support" FORCE)
  add_subdirectory (extern/jsoncpp)
  target_link_libraries(domoticz jsoncpp_lib)
  INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/extern/jsoncpp/include)
ELSE(USE_BUILTIN_JSONCPP)
  find_package(PkgConfig)
  pkg_check_modules(JSONCPP REQUIRED jsoncpp)
  if(JSONCPP_FOUND)
    MESSAGE(STATUS "JSONCPP includes found at: ${JSONCPP_INCLUDE_DIRS}")
    target_include_directories(domoticz PRIVATE ${JSONCPP_INCLUDE_DIRS})
    target_link_directories(domoticz PRIVATE ${JSONCPP_LIBRARY_DIRS})
    target_link_libraries(domoticz ${JSONCPP_LIBRARIES})
  else(JSONCPP_FOUND)
    MESSAGE(FATAL_ERROR "JSONCPP not found on your system! try 'sudo apt-get install jsoncpp-dev'")
  endif(JSONCPP_FOUND)
ENDIF(USE_BUILTIN_JSONCPP)

# mosquitto
IF(USE_BUILTIN_MQTT)
  MESSAGE(STATUS "Using builtin Mosquitto library")
  option(WITH_STATIC_LIBRARIES "Build static versions of the libmosquitto/pp libraries?" ON)
  add_subdirectory (extern/mosquitto)
  target_link_libraries(domoticz libmosquitto_static)
  INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/extern/mosquitto/lib ${CMAKE_SOURCE_DIR}/extern/mosquitto/src/deps)
ELSE(USE_BUILTIN_MQTT)
  find_library(MQTT_LIBRARIES NAMES libmosquitto.so)
  find_path(MQTT_INCLUDE_DIRS NAMES mosquitto.h)
  IF(MQTT_LIBRARIES AND MQTT_INCLUDE_DIRS)
    MESSAGE(STATUS "MQTT includes found at: ${MQTT_INCLUDE_DIRS}")
    INCLUDE_DIRECTORIES(${MQTT_INCLUDE_DIRS})
  ELSE(MQTT_LIBRARIES AND MQTT_INCLUDE_DIRS)
    MESSAGE(FATAL_ERROR "Mosquitto library not found on your system, see install.txt how to get them installed. (for example 'sudo apt-get install libmosquitto-dev')")
  ENDIF(MQTT_LIBRARIES AND MQTT_INCLUDE_DIRS)
ENDIF(USE_BUILTIN_MQTT)

# sqlite3
IF(USE_BUILTIN_SQLITE)
  MESSAGE(STATUS "Using builtin SQLite library")
  add_subdirectory (extern/sqlite-amalgamation)
  target_link_libraries(domoticz SQLite3)
  INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/extern/sqlite-amalgamation)
ELSE(USE_BUILTIN_SQLITE)
  find_package(SQLite3)
  IF(SQLite3_FOUND)
    MESSAGE(STATUS "SQLite library found at: ${SQLite3_LIBRARIES}")
    MESSAGE(STATUS "SQLite includes found at: ${SQLite3_INCLUDE_DIRS}")
    INCLUDE_DIRECTORIES(${SQLite3_INCLUDE_DIRS})
    target_link_libraries(domoticz ${SQLite3_LIBRARIES})
  ELSE(SQLite3_FOUND)
    MESSAGE(FATAL_ERROR "SQLite3 not found on your system! try 'sudo apt-get install libsqlite3-dev'")
  ENDIF(SQLite3_FOUND)
ENDIF(USE_BUILTIN_SQLITE)

# minizip
IF(USE_BUILTIN_MINIZIP)
  add_subdirectory (extern/minizip)
  target_link_libraries(domoticz minizip)
  INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/extern/minizip)
ELSE(USE_BUILTIN_MINIZIP)
  find_package(PkgConfig)
  pkg_check_modules(MINIZIP REQUIRED minizip)
  if(MINIZIP_FOUND)
    MESSAGE(STATUS "MINIZIP includes found at: ${MINIZIP_INCLUDE_DIRS}")
    target_include_directories(domoticz PRIVATE ${MINIZIP_INCLUDE_DIRS})
    target_link_directories(domoticz PRIVATE ${MINIZIP_LIBRARY_DIRS})
    target_link_libraries(domoticz ${MINIZIP_LIBRARIES})
  else(MINIZIP_FOUND)
    MESSAGE(FATAL_ERROR "MINIZIP not found on your system! try 'sudo apt-get install minizip-dev'")
  endif(MINIZIP_FOUND)
ENDIF(USE_BUILTIN_MINIZIP)

#
# Find MD5/RMD160/SHA library
#
IF(USE_OPENSSL_STATIC)
  set(OPENSSL_USE_STATIC_LIBS TRUE)
ENDIF(USE_OPENSSL_STATIC)

find_package(OpenSSL REQUIRED)
if(NOT OPENSSL_INCLUDE_DIR)
  message(SEND_ERROR "Failed to find OpenSSL include files (ssl.h), no HTTPS support")
endif()
if(NOT OPENSSL_FOUND)
  message(SEND_ERROR "Failed to find the OpenSSL library, no HTTPS support")
  find_library(MD_LIBRARY NAMES md)
  if(MD_LIBRARY)
    target_link_libraries(domoticz ${MD_LIBRARY})
  endif(MD_LIBRARY)
else()
  message(STATUS "OPENSSL library found at: ${OPENSSL_LIBRARIES}")
  add_definitions(-DWWW_ENABLE_SSL)
  add_definitions(-DWITH_TLS)
  include_directories(${OPENSSL_INCLUDE_DIR})
  target_link_libraries(domoticz ${OPENSSL_LIBRARIES})
endif()

#
# Boost
#
set( Boost_USE_STATIC_LIBS ${USE_STATIC_BOOST})
set( Boost_USE_MULTITHREADED ON)
set( BOOST_ROOT "" CACHE PATH "Boost library path" )
set( Boost_NO_SYSTEM_PATHS on CACHE BOOL "Do not search system for Boost" )
set( boost_INSTALL ${CMAKE_SOURCE_DIR}/../install/usr/local/domoticz )
set( boost_INCLUDE_DIRS ${boost_INSTALL}/include )
set( boost_LIB_DIR ${boost_INSTALL}/lib )
set( Boost_LIBRARIES ${boost_LIB_DIR}/libboost_thread.a ${boost_LIB_DIR}/libboost_system.a )
message( STATUS "Boost static include: " ${boost_INCLUDE_DIRS} )
message( STATUS "Boost static libs: " ${Boost_LIBRARIES} )
include_directories(${Boost_INCLUDE_DIRS})

#
# ZLIB
#
find_package(ZLIB REQUIRED)
if(ZLIB_FOUND)
  MESSAGE(STATUS "ZLIB library found at: ${ZLIB_LIBRARIES}")
  MESSAGE(STATUS "ZLIB includes found at: ${ZLIB_INCLUDE_DIRS}")
  include_directories(${ZLIB_INCLUDE_DIRS})
else()
  MESSAGE(FATAL_ERROR "ZLIB not found on your system! try 'sudo apt-get install zlib1g-dev'")
endif(ZLIB_FOUND)

#
# CURL
#
FIND_PACKAGE(CURL REQUIRED)
IF(CURL_FOUND)
  MESSAGE(STATUS "Curl library found at: ${CURL_LIBRARIES}")
  MESSAGE(STATUS "Curl includes found at: ${CURL_INCLUDE_DIRS}")
  INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIRS})
else()
  MESSAGE(FATAL_ERROR "cURL not found! try 'sudo apt-get install curl libcurl4-gnutls-dev'")
ENDIF(CURL_FOUND)

#
# CEREAL
#
find_path(CEREAL_INCLUDE_DIRS NAMES cereal/cereal.hpp)
if(CEREAL_INCLUDE_DIRS)
  MESSAGE(STATUS "CEREAL includes found at: ${CEREAL_INCLUDE_DIRS}")
  include_directories(${CEREAL_INCLUDE_DIRS})
else()
  MESSAGE(FATAL_ERROR "CEREAL not found on your system! try 'sudo apt-get install libcereal-dev'")
endif(CEREAL_INCLUDE_DIRS)

#
# USB
#
if(WITH_LIBUSB)
  find_path(LIBUSB_INCLUDE_DIR usb.h
     HINTS ${PC_LIBUSB_INCLUDEDIR} ${PC_LIBUSB_INCLUDE_DIRS})
  find_library(LIBUSB_LIBRARY NAMES usb
     HINTS ${PC_LIBUSB_LIBDIR} ${PC_LIBUSB_LIBRARY_DIRS})
  set(LIBUSB_LIBRARIES ${LIBUSB_LIBRARY})

  find_package_handle_standard_args(LIBUSB  DEFAULT_MSG  LIBUSB_LIBRARIES LIBUSB_INCLUDE_DIR)
  IF(LIBUSB_FOUND)
    MESSAGE(STATUS "LIBUSB library found at: ${LIBUSB_LIBRARIES}")
    add_definitions(-DWITH_LIBUSB)
    target_link_libraries(domoticz ${LIBUSB_LIBRARIES})
  else()
    MESSAGE(STATUS "==== LibUSB not found, support for TE923/Voltcraft disabled!")
  ENDIF(LIBUSB_FOUND)
endif(WITH_LIBUSB)

## support lua popen on Linux platforms
#IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
# SET(OperatingSystem "Linux")
# add_definitions(-DLUA_USE_LINUX)
#ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")

#
# OpenZWave
# try to find open-zwave, if found, include support
#
if(USE_STATIC_OPENZWAVE)
  find_library(OpenZWave NAMES libopenzwave.a HINTS "../open-zwave-read-only" "../open-zwave-read-only/cpp/build")
  set(OPENZWAVE_LIB ${OpenZWave})
else()
  pkg_check_modules(OPENZWAVE libopenzwave)
  if(OPENZWAVE_FOUND)
    MESSAGE(STATUS "==== OpenZWave package found!")
    find_library(OpenZWave NAMES libopenzwave.so HINTS ${OPENZWAVE_LIBRARY_DIRS})
    message(STATUS OpenZWave library found at: ${OpenZWave})
  endif()
endif()
IF(OpenZWave)
  message(STATUS "OpenZWave library found at: ${OpenZWave}")
  target_link_libraries(domoticz ${OpenZWave})

  find_path(OPENZWAVE_INCLUDE_DIRS NAMES openzwave/Manager.h)
  if (OPENZWAVE_INCLUDE_DIRS)
    IF(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
      include_directories(${OPENZWAVE_INCLUDE_DIRS})
    ELSE()
      include_directories(${OPENZWAVE_INCLUDE_DIRS}/openzwave)
    ENDIF()
    message(STATUS "OpenZWave includes found at: ${OPENZWAVE_INCLUDE_DIRS}")
  else()
    message(FATAL_ERROR "OpenZWave includes not found. Did you not issue 'sudo make install' after building OpenZWave?")
  endif (OPENZWAVE_INCLUDE_DIRS)
  add_definitions(-DWITH_OPENZWAVE)
ELSE()
  MESSAGE(STATUS "==== OpenZWave not found, support disabled!")
ENDIF(OpenZWave)


IF(EXISTS /sys/class/gpio)
  message(STATUS "GPIO is available")
  add_definitions(-DWITH_GPIO)
ELSE()
  message(STATUS "GPIO is not available")
ENDIF()


find_path(TELLDUSCORE_INCLUDE NAMES telldus-core.h)
if (TELLDUSCORE_INCLUDE)
  message(STATUS "Found telldus-core (telldus-core.h) at : ${TELLDUSCORE_INCLUDE}")
  find_library(TELLDUS_LIBRARIES NAMES libtelldus-core.so)
  if(TELLDUS_LIBRARIES)
    message(STATUS "Found libtelldus-core at : ${TELLDUS_LIBRARIES}, adding telldus support")
    add_definitions(-DWITH_TELLDUSCORE)
  endif(TELLDUS_LIBRARIES)
else()
  message(STATUS "Not found telldus-core (telldus-core.h), not adding tellstick support")
endif (TELLDUSCORE_INCLUDE)

target_link_libraries(domoticz ${Boost_LIBRARIES} ${ZLIB_LIBRARIES} ${MINIZIP_LIBRARIES} ${CURL_LIBRARIES} pthread ${MQTT_LIBRARIES} ${LUA_LIBRARIES} ${CMAKE_DL_LIBS} ${TELLDUS_LIBRARIES})

IF(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
  target_link_libraries(domoticz -lresolv)
elseif(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
  target_link_libraries(domoticz ${EXECINFO_LIBRARIES})
elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
  target_link_libraries(domoticz ${EXECINFO_LIBRARIES})
else()
  target_link_libraries(domoticz -lrt -lresolv ${EXECINFO_LIBRARIES})
ENDIF()

if(USE_PRECOMPILED_HEADER)
  message(STATUS "Using precompiled headers")
  target_precompile_headers(domoticz PRIVATE "main/stdafx.h")
ENDIF(USE_PRECOMPILED_HEADER)

IF(CMAKE_COMPILER_IS_GNUCXX)
  option(USE_STATIC_LIBSTDCXX "Build with static libgcc/libstdc++ libraries" YES)
  IF(USE_STATIC_LIBSTDCXX)
    message(STATUS "Using static libgcc/libstdc++")
    SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "${CMAKE_SHARED_LIBRARY_LINK_C_FLAGS} -static-libgcc -static-libstdc++")
    SET(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "${CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS} -static-libgcc -static-libstdc++")
    SET(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -static-libgcc -static-libstdc++")
  ELSE(USE_STATIC_LIBSTDCXX)
    message(STATUS "Using dynamic libgcc_s/libstdc++")
  ENDIF(USE_STATIC_LIBSTDCXX)
ENDIF(CMAKE_COMPILER_IS_GNUCXX)

# build a CPack driven installer package

SET(CPACK_GENERATOR "DEB")
SET(CPACK_PACKAGE_NAME "domoticz")
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${domoticz}-Home Automation System (Domotica).")
SET(CPACK_PACKAGE_VENDOR "Domoticz.com")
SET(CPACK_PACKAGE_CONTACT "[email protected]")
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/License.txt")

SET(CPACK_PACKAGE_VERSION_MAJOR "${domoticz_VERSION_MAJOR}")
SET(CPACK_PACKAGE_VERSION_MINOR "${domoticz_VERSION_MINOR}")
SET(CPACK_PACKAGE_VERSION_PATCH "${domoticz_VERSION_PATCH}")

SET(CPACK_PACKAGE_INSTALL_DIRECTORY "domoticz")
#SET (DOMOTICZ_VERSION_SHORT "${domoticz_VERSION_MAJOR}.${domoticz_VERSION_MINOR}.${domoticz_VERSION_PATCH}")
#SET(CPACK_PACKAGE_FILE_NAME "domoticz-${DOMOTICZ_VERSION_SHORT}-${CMAKE_SYSTEM_NAME}")

SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${domoticz}-dev")
SET(CPACK_PACKAGING_INSTALL_PREFIX "/")
SET(CPACK_PACKAGE_DEFAULT_LOCATION "/opt/${CPACK_PACKAGE_NAME}")
SET(CPACK_PACKAGE_EXECUTABLES "domoticz;Home Automation System (Domotica).")

#set(CPACK_DEB_COMPONENT_INSTALL TRUE)
SET(CPACK_DEBIAN_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR})

INCLUDE(CPack)

IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
  set(CMAKE_INSTALL_PREFIX "/opt/${CPACK_PACKAGE_NAME}" CACHE PATH "Install path prefix, prepended onto install directories." FORCE)
ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)

install(TARGETS domoticz DESTINATION ${CMAKE_INSTALL_PREFIX})
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/www DESTINATION ${CMAKE_INSTALL_PREFIX})
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/License.txt DESTINATION ${CMAKE_INSTALL_PREFIX})
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/History.txt DESTINATION ${CMAKE_INSTALL_PREFIX})
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/server_cert.pem DESTINATION ${CMAKE_INSTALL_PREFIX})
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/scripts DESTINATION ${CMAKE_INSTALL_PREFIX} USE_SOURCE_PERMISSIONS)
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/plugins DESTINATION ${CMAKE_INSTALL_PREFIX})
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Config DESTINATION ${CMAKE_INSTALL_PREFIX})
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/dzVents DESTINATION ${CMAKE_INSTALL_PREFIX})
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/updatedomo DESTINATION ${CMAKE_INSTALL_PREFIX} PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ)
5. Edit line 96 of CMakeLists.txt in ~/spksrc/cross/domoticz/work-braswell-6.1/domoticz-2020.2/extern/mosquitto :
#add_subdirectory (client)

6. Manually copy:
domoticz/.git to ~/spksrc/cross/domoticz/work-braswell-6.1/domoticz-2002.2
cp -r /usr/include/cereal ~/spksrc/cross/domoticz/work-braswell-6.1/install/usr/local/domoticz/include
cp /usr/include/x86_64-linux-gnu/lua5.3-deb-multiarch.h ~/spksrc/cross/domoticz/work-braswell-6.1/install/usr/local/domoticz/include

7. ~/spksrc/spk/domoticz/Makefile

Code: Select all

SPK_NAME = domoticz
SPK_VERS = 2020.2
SPK_REV = 1
SPK_ICON = src/domoticz.png
DSM_UI_DIR = app

DEPENDS = cross/$(SPK_NAME)

DESCRIPTION = Domoticz Home Automation System Package.
ADMIN_PORT = 8084
RELOAD_UI = yes
DISPLAY_NAME = Domoticz
CHANGELOG = "Update to version 2020.2"

HOMEPAGE = http://www.domoticz.com/
LICENSE  = GPLv3

INSTALLER_SCRIPT = src/installer.sh
SSS_SCRIPT       = src/dsm-control.sh
FWPORTS          = src/${SPK_NAME}.sc
CONF_DIR         = src/conf/

INSTALL_PREFIX = /usr/local/$(SPK_NAME)

POST_STRIP_TARGET = domoticz_extra_install

include ../../mk/spksrc.spk.mk

.PHONY: domoticz_extra_install
domoticz_extra_install:
	install -m 755 -d $(STAGING_DIR)/app
	install -m 644 src/app/config $(STAGING_DIR)/app/config

Re: How to compile Domoticz sources for Synology

Posted: Wednesday 15 July 2020 20:19
by Antori91
It works also for 32 bits address model of Synology like the armada38X (DS216j for example). But in this case, I have to use version 1.66.0 of Boost library. It seems latest Boost library version can't be currently compiled. I've opened an issue: https://github.com/SynoCommunity/spksrc/issues/4069

Screenshot from 2020-07-15 20-18-14.png
Screenshot from 2020-07-15 20-18-14.png (24.78 KiB) Viewed 2061 times

Re: How to compile Domoticz sources for Synology

Posted: Friday 17 July 2020 0:42
by Alcloud
Very good job, thank you!