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_source_files_properties (pyupm_${libname}.i PROPERTIES CPLUSPLUS ON)
21 swig_add_module (pyupm_${libname} python pyupm_${libname}.i ${module_src})
22 swig_link_libraries (pyupm_${libname} ${PYTHON_LIBRARIES} ${MRAA_LIBRARIES})
23 target_include_directories ( ${SWIG_MODULE_pyupm_${libname}_REAL_NAME}
25 "${PYTHON_INCLUDE_PATH}"
26 "${PYTHON_INCLUDE_DIRS}"
28 install (FILES ${CMAKE_CURRENT_BINARY_DIR}/_pyupm_${libname}.so
29 ${CMAKE_CURRENT_BINARY_DIR}/pyupm_${libname}.py
30 DESTINATION ${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages/
36 if (BUILDSWIGNODE AND BUILDSWIG)
37 set_source_files_properties (jsupm_${libname}.i PROPERTIES CPLUSPLUS ON)
38 set_source_files_properties (jsupm_${libname}.i PROPERTIES SWIG_FLAGS "-node")
39 swig_add_module (jsupm_${libname} javascript jsupm_${libname}.i ${module_src})
40 swig_link_libraries (jsupm_${libname} ${MRAA_LIBRARIES} ${NODE_LIBRARIES})
41 target_include_directories ( ${SWIG_MODULE_jsupm_${libname}_REAL_NAME}
43 "${NODE_INCLUDE_DIRS}"
45 set_target_properties (jsupm_${libname} PROPERTIES
46 COMPILE_FLAGS "${CMAKE_CXX_FLAGS} -DBUILDING_NODE_EXTENSION"
50 createpackagejson(${libname})
51 install (FILES ${CMAKE_CURRENT_BINARY_DIR}/jsupm_${libname}.node
52 DESTINATION lib/node_modules/jsupm_${libname} COMPONENT ${libname})
58 set (CMAKE_SWIG_FLAGS -DDOXYGEN=${DOXYGEN_FOUND})
59 add_custom_command (OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${libname}_doc.i
60 COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/../doxy2swig.py -n
61 ${CMAKE_BINARY_DIR}/xml/${libname}_8h.xml
62 ${CMAKE_CURRENT_BINARY_DIR}/${libname}_doc.i
63 DEPENDS ${CMAKE_BINARY_DIR}/xml/${libname}_8h.xml
65 add_custom_target (${libname}doc_i DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${libname}_doc.i)
66 add_dependencies (${libname}doc_i doc)
68 add_dependencies (_pyupm_${libname} ${libname}doc_i)
70 add_dependencies (${libname} doc)
77 find_package (PythonLibs)
78 string (REPLACE "." ";" PYTHON_VERSION_LIST ${PYTHONLIBS_VERSION_STRING})
79 list (GET PYTHON_VERSION_LIST 0 PYTHON_VERSION_MAJOR)
80 list (GET PYTHON_VERSION_LIST 1 PYTHON_VERSION_MINOR)
81 endif(BUILDSWIGPYTHON)
83 find_path (NODE_ROOT_DIR "node/node.h")
84 set (NODE_INCLUDE_DIRS
87 ${NODE_ROOT_DIR}/deps/v8/include
88 ${NODE_ROOT_DIR}/deps/uv/include
90 macro(createpackagejson)
91 configure_file (${PROJECT_SOURCE_DIR}/src/package.json.in ${CMAKE_CURRENT_BINARY_DIR}/package.json @ONLY)
92 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/package.json
93 DESTINATION lib/node_modules/jsupm_${libname} COMPONENT ${libname})
99 macro(upm_module_init)
100 add_library (${libname} SHARED ${module_src})
101 include_directories (${MRAA_INCLUDE_DIR} .)
102 target_link_libraries (${libname} ${MRAA_LIBRARIES})
103 set_target_properties(
105 PROPERTIES PREFIX "libupm-"
106 SOVERSION ${upm_VERSION_MAJOR}
107 VERSION ${upm_VERSION_STRING}
109 upm_create_install_pkgconfig (upm-${libname}.pc lib${LIB_SUFFIX}/pkgconfig)
117 install(TARGETS ${libname} DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR} )
118 install (FILES ${module_h} DESTINATION include/upm COMPONENT ${libname})
121 cpack_add_component (${libname} DISPLAY_NAME ${libname} REQUIRED INSTALL_TYPES all)
122 set(CPACK_COMPONENT_${libname}_DESCRIPTION "${libdescription}")
124 endmacro(upm_module_init)
126 subdirlist(SUBDIRS ${CMAKE_CURRENT_SOURCE_DIR})
127 foreach(subdir ${SUBDIRS})
128 add_subdirectory(${subdir})