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 BUILDSIWG)
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})
58 if (DOXYGEN_FOUND AND BUILDSWIG)
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)
68 add_dependencies (${SWIG_MODULE_pyupm_${libname}_REAL_NAME} ${libname}doc_i)
74 find_package (PythonLibs)
75 string (REPLACE "." ";" PYTHON_VERSION_LIST ${PYTHONLIBS_VERSION_STRING})
76 list (GET PYTHON_VERSION_LIST 0 PYTHON_VERSION_MAJOR)
77 list (GET PYTHON_VERSION_LIST 1 PYTHON_VERSION_MINOR)
78 endif(BUILDSWIGPYTHON)
80 find_path (NODE_ROOT_DIR "node/node.h")
81 set (NODE_INCLUDE_DIRS
84 ${NODE_ROOT_DIR}/deps/v8/include
85 ${NODE_ROOT_DIR}/deps/uv/include
87 macro(createpackagejson)
88 configure_file (${PROJECT_SOURCE_DIR}/src/package.json.in ${CMAKE_CURRENT_BINARY_DIR}/package.json @ONLY)
89 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/package.json
90 DESTINATION lib/node_modules/jsupm_${libname} COMPONENT ${libname})
96 macro(upm_module_init)
97 add_library (${libname} SHARED ${module_src})
98 include_directories (${MRAA_INCLUDE_DIR} .)
99 target_link_libraries (${libname} ${MRAA_LIBRARIES})
100 set_target_properties(
102 PROPERTIES PREFIX "libupm-"
103 SOVERSION ${upm_VERSION_MAJOR}
104 VERSION ${upm_VERSION_STRING}
106 upm_create_install_pkgconfig (upm-${libname}.pc lib${LIB_SUFFIX}/pkgconfig)
112 install (TARGETS ${libname} DESTINATION lib COMPONENT ${libname})
113 install (FILES ${module_h} DESTINATION include/upm COMPONENT ${libname})
116 cpack_add_component (${libname} DISPLAY_NAME ${libname} REQUIRED INSTALL_TYPES all)
117 set(CPACK_COMPONENT_${libname}_DESCRIPTION "${libdescription}")
119 endmacro(upm_module_init)
121 subdirlist(SUBDIRS ${CMAKE_CURRENT_SOURCE_DIR})
122 foreach(subdir ${SUBDIRS})
123 add_subdirectory(${subdir})