1 macro(subdirlist result curdir)
2 file(GLOB children RELATIVE ${curdir} ${curdir}/*)
4 foreach(child ${children})
5 if(IS_DIRECTORY ${curdir}/${child})
6 set(dirlist ${dirlist} ${child})
9 set(${result} ${dirlist})
12 macro (upm_CREATE_INSTALL_PKGCONFIG generated_file install_location)
13 configure_file (${PROJECT_SOURCE_DIR}/src/pkgconfig.in
14 ${CMAKE_CURRENT_BINARY_DIR}/${generated_file} @ONLY)
15 install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${generated_file} DESTINATION ${install_location})
16 endmacro (upm_CREATE_INSTALL_PKGCONFIG)
18 macro(upm_SWIG_PYTHON)
19 if (BUILDSWIGPYTHON AND BUILDSWIG)
20 set (CMAKE_C_FLAGS -DSWIGPYTHON=${SWIG_FOUND})
21 set_source_files_properties (pyupm_${libname}.i PROPERTIES CPLUSPLUS ON)
22 swig_add_module (pyupm_${libname} python pyupm_${libname}.i ${module_src})
23 swig_link_libraries (pyupm_${libname} ${PYTHON_LIBRARIES} ${MRAA_LIBRARIES})
24 target_include_directories ( ${SWIG_MODULE_pyupm_${libname}_REAL_NAME}
26 "${PYTHON_INCLUDE_PATH}"
27 "${PYTHON_INCLUDE_DIRS}"
29 install (FILES ${CMAKE_CURRENT_BINARY_DIR}/_pyupm_${libname}.so
30 ${CMAKE_CURRENT_BINARY_DIR}/pyupm_${libname}.py
31 DESTINATION lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages/
37 if (BUILDSWIGNODE AND BUILDSWIG)
38 set (CMAKE_CXX_FLAGS -DBUILDING_NODE_EXTENSION)
39 set_source_files_properties (jsupm_${libname}.i PROPERTIES CPLUSPLUS ON)
40 set_source_files_properties (jsupm_${libname}.i PROPERTIES SWIG_FLAGS "-node")
41 swig_add_module (jsupm_${libname} javascript jsupm_${libname}.i ${module_src})
42 swig_link_libraries (jsupm_${libname} ${MRAA_LIBRARIES} ${NODE_LIBRARIES})
43 target_include_directories ( ${SWIG_MODULE_jsupm_${libname}_REAL_NAME}
45 "${NODE_INCLUDE_DIRS}"
47 set_target_properties (jsupm_${libname} PROPERTIES
51 createpackagejson(${libname})
52 install (FILES ${CMAKE_CURRENT_BINARY_DIR}/jsupm_${libname}.node
53 DESTINATION lib/node_modules/jsupm_${libname} COMPONENT ${libname})
59 set (CMAKE_SWIG_FLAGS -DDOXYGEN=${DOXYGEN_FOUND})
60 add_custom_command (OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${libname}_doc.i
61 COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/../doxy2swig.py -n
62 ${CMAKE_BINARY_DIR}/xml/${libname}_8h.xml
63 ${CMAKE_CURRENT_BINARY_DIR}/${libname}_doc.i
64 DEPENDS ${CMAKE_BINARY_DIR}/xml/${libname}_8h.xml
66 add_custom_target (${libname}doc_i DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${libname}_doc.i)
67 add_dependencies (${libname}doc_i doc)
69 add_dependencies (_pyupm_${libname} ${libname}doc_i)
71 add_dependencies (${libname} doc)
78 find_package (PythonLibs)
79 string (REPLACE "." ";" PYTHON_VERSION_LIST ${PYTHONLIBS_VERSION_STRING})
80 list (GET PYTHON_VERSION_LIST 0 PYTHON_VERSION_MAJOR)
81 list (GET PYTHON_VERSION_LIST 1 PYTHON_VERSION_MINOR)
82 endif(BUILDSWIGPYTHON)
84 find_path (NODE_ROOT_DIR "node/node.h")
85 set (NODE_INCLUDE_DIRS
88 ${NODE_ROOT_DIR}/deps/v8/include
89 ${NODE_ROOT_DIR}/deps/uv/include
91 macro(createpackagejson)
92 configure_file (${PROJECT_SOURCE_DIR}/src/package.json.in ${CMAKE_CURRENT_BINARY_DIR}/package.json @ONLY)
93 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/package.json
94 DESTINATION lib/node_modules/jsupm_${libname} COMPONENT ${libname})
100 macro(upm_module_init)
101 add_library (${libname} SHARED ${module_src})
102 include_directories (${MRAA_INCLUDE_DIR} .)
103 target_link_libraries (${libname} ${MRAA_LIBRARIES})
104 set_target_properties(
106 PROPERTIES PREFIX "libupm-"
107 SOVERSION ${upm_VERSION_MAJOR}
108 VERSION ${upm_VERSION_STRING}
110 upm_create_install_pkgconfig (upm-${libname}.pc lib${LIB_SUFFIX}/pkgconfig)
118 install (TARGETS ${libname} DESTINATION lib COMPONENT ${libname})
119 install (FILES ${module_h} DESTINATION include/upm COMPONENT ${libname})
122 cpack_add_component (${libname} DISPLAY_NAME ${libname} REQUIRED INSTALL_TYPES all)
123 set(CPACK_COMPONENT_${libname}_DESCRIPTION "${libdescription}")
125 endmacro(upm_module_init)
127 subdirlist(SUBDIRS ${CMAKE_CURRENT_SOURCE_DIR})
128 foreach(subdir ${SUBDIRS})
129 add_subdirectory(${subdir})