Skip to content

Commit 4be640b

Browse files
committed
2 parents 023aa3d + 9855a97 commit 4be640b

File tree

8 files changed

+202
-90
lines changed

8 files changed

+202
-90
lines changed

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ matrix:
7272
install:
7373
- brew install cmake
7474
- brew install boost|| true
75+
- brew install boost-python|| true
7576
- brew install libusb
7677
- brew install libusb-compat
7778
- brew install zlib || true

CMakeLists.txt

Lines changed: 50 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
cmake_minimum_required(VERSION 2.8.4)
33

44
project(domoticz)
5-
5+
66
option(USE_BUILTIN_LUA "Use builtin lua library" YES)
77
IF(USE_BUILTIN_LUA)
88
add_subdirectory (lua)
@@ -41,7 +41,7 @@ ELSE(USE_BUILTIN_SQLITE)
4141
ENDIF(SQLite_FOUND)
4242
ENDIF(USE_BUILTIN_SQLITE)
4343

44-
SET(EXECUTABLE_OUTPUT_PATH "" CACHE INTERNAL
44+
SET(EXECUTABLE_OUTPUT_PATH "" CACHE INTERNAL
4545
"Where to put the executables for Domoticz"
4646
)
4747

@@ -150,14 +150,14 @@ set (domoticz_VERSION_MAJOR 3)
150150
set (domoticz_VERSION_MINOR 0)
151151
set (domoticz_VERSION_PATCH ${ProjectRevision})
152152

153-
include_directories(${CMAKE_SOURCE_DIR}/main)
153+
include_directories(${CMAKE_SOURCE_DIR}/main)
154154

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

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

163163
## Target
@@ -330,19 +330,56 @@ add_dependencies(domoticz revisiontag)
330330

331331
## Link libraries
332332

333-
option(USE_STATIC_BOOST "Build with static BOOST libraries" YES)
333+
option(USE_PYTHON "Use Python as a scripting language" NO)
334+
if(USE_PYTHON)
335+
FIND_PACKAGE(PythonLibs)
336+
IF(PYTHONLIBS_FOUND)
337+
MESSAGE(STATUS "Python libraries found at: ${PYTHON_LIBRARIES}")
338+
MESSAGE(STATUS "Python includes found at: ${PYTHON_INCLUDE_PATH}")
339+
INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH})
340+
else()
341+
MESSAGE(FATAL_ERROR "Python not found on your system, see install.txt how to get them installed. (for example 'sudo apt-get install python-dev')")
342+
ENDIF(PYTHONLIBS_FOUND)
343+
344+
FIND_PACKAGE(PythonInterp)
345+
IF(PYTHONINTERP_FOUND)
346+
MESSAGE(STATUS "Python interpreter found at: ${PYTHON_EXECUTABLE}")
347+
INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH})
348+
LIST(APPEND ADDITIONAL_LIBS ${PYTHON_LIBRARIES})
349+
MESSAGE(STATUS "Python as scripting languages: ENABLED")
350+
IF(PYTHONLIBS_FOUND)
351+
add_definitions(-DENABLE_PYTHON)
352+
add_definitions(-DPYTHON_EXE=${PYTHON_EXECUTABLE})
353+
target_link_libraries(domoticz ${PYTHON_LIBRARIES})
354+
ELSE()
355+
MESSAGE(FATAL_ERROR "Python not found on your system, see install.txt how to get them installed. (for example 'sudo apt-get install python-dev')")
356+
ENDIF(PYTHONLIBS_FOUND)
357+
358+
else()
359+
MESSAGE(FATAL_ERROR "Python not found on your system, see install.txt how to get them installed. (for example 'sudo apt-get install python-dev')")
360+
ENDIF(PYTHONINTERP_FOUND)
361+
endif(USE_PYTHON)
362+
363+
option(USE_STATIC_BOOST "Build with static BOOST libraries" NO)
334364
set(Boost_USE_STATIC_LIBS ${USE_STATIC_BOOST})
335365
set(Boost_USE_MULTITHREADED ON)
336366
unset(Boost_INCLUDE_DIR CACHE)
337367
unset(Boost_LIBRARY_DIRS CACHE)
338-
find_package(Boost REQUIRED COMPONENTS thread date_time system)
368+
IF(USE_PYTHON AND PYTHONLIBS_FOUND)
369+
find_package(Boost REQUIRED COMPONENTS thread date_time system python)
370+
else()
371+
find_package(Boost REQUIRED COMPONENTS thread date_time system)
372+
endif(USE_PYTHON AND PYTHONLIBS_FOUND)
373+
339374
if(USE_STATIC_BOOST)
340375
message(STATUS "Linking against boost static libraries")
341376
else(USE_STATIC_BOOST)
342377
message(STATUS "Linking against boost dynamic libraries")
343378
endif(USE_STATIC_BOOST)
344379
include_directories(${Boost_INCLUDE_DIRS})
345380

381+
382+
346383
option(USE_BUILTIN_ZLIB "Use builtin zlib library" NO)
347384
if(USE_BUILTIN_ZLIB)
348385
add_subdirectory (zlib)
@@ -419,12 +456,12 @@ else()
419456
MESSAGE(STATUS "==== OpenZWave package found!")
420457
find_library(OpenZWave NAMES libopenzwave.so HINTS ${OPENZWAVE_LIBRARY_DIRS})
421458
message(STATUS ${OpenZWave})
422-
endif()
459+
endif()
423460
endif()
424461
IF(OpenZWave)
425462
message(STATUS ${OpenZWave})
426463
target_link_libraries(domoticz ${OpenZWave})
427-
include_directories(${CMAKE_SOURCE_DIR}/hardware/openzwave)
464+
include_directories(${CMAKE_SOURCE_DIR}/hardware/openzwave)
428465
add_definitions(-DWITH_OPENZWAVE)
429466
# open-zwave needs libudev
430467
IF(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
@@ -433,16 +470,16 @@ IF(OpenZWave)
433470
else()
434471
IF(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
435472
MESSAGE(STATUS "Building on FreeBSD, libudev not needed!")
436-
FIND_PATH(ICONV_INCLUDE_DIR iconv.h)
473+
FIND_PATH(ICONV_INCLUDE_DIR iconv.h)
437474
FIND_LIBRARY(ICONV_LIBRARIES NAMES iconv libiconv libiconv-2 c)
438-
IF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
439-
SET(ICONV_FOUND TRUE)
475+
IF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
476+
SET(ICONV_FOUND TRUE)
440477
#target_link_libraries(domoticz ${ICONV_INCLUDE_DIR})
441478
target_link_libraries(domoticz ${ICONV_LIBRARIES} -lrt)
442479
message(STATUS ${ICONV_LIBRARIES})
443480
else()
444481
MESSAGE(FATAL_ERROR "libiconv not found on your system")
445-
ENDIF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
482+
ENDIF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
446483
else()
447484
find_library(UDEV NAMES libudev.a)
448485
IF(UDEV)
@@ -474,7 +511,7 @@ IF(RaspberryPi)
474511
IF(WIRINGPI_LIBRARY)
475512
message(STATUS "WiringPi library was found in ${WIRINGPI_LIBRARY}...")
476513
add_definitions(-DWITH_GPIO)
477-
target_link_libraries(domoticz ${WIRINGPI_LIBRARY})
514+
target_link_libraries(domoticz ${WIRINGPI_LIBRARY})
478515
else()
479516
message(STATUS "==== WiringPi library not found. GPIO support disabled.")
480517
message(STATUS "==== (Please follow http://wiringpi.com/download-and-install/ if you want to use GPIO.)")

0 commit comments

Comments
 (0)