X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2FCMakeLists.txt;h=28aa5bd61432308f55dae3a725e428deacbadc07;hb=d71e4e5dc287f958d7d4b4783616350b621926e6;hp=51edb876fca99c9f05dc334581c71f0b04675b77;hpb=23d847e3800646035c8b492f600a790c8fc87c71;p=contrib%2Fupm.git diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 51edb87..28aa5bd 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,9 +1,118 @@ -add_subdirectory (hmc5883l) -add_subdirectory (grove) -add_subdirectory (lcd) -add_subdirectory (buzzer) -add_subdirectory (ledbar) -add_subdirectory (4digitdisplay) -add_subdirectory (nrf24l01) -add_subdirectory (servo) -add_subdirectory (hcsr04) +macro(subdirlist result curdir) + file(GLOB children RELATIVE ${curdir} ${curdir}/*) + set(dirlist "") + foreach(child ${children}) + if(IS_DIRECTORY ${curdir}/${child}) + set(dirlist ${dirlist} ${child}) + endif() + endforeach() + set(${result} ${dirlist}) +endmacro() + +macro (upm_CREATE_INSTALL_PKGCONFIG generated_file install_location) + configure_file (${PROJECT_SOURCE_DIR}/src/pkgconfig.in + ${CMAKE_CURRENT_BINARY_DIR}/${generated_file} @ONLY) + install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${generated_file} DESTINATION ${install_location}) +endmacro (upm_CREATE_INSTALL_PKGCONFIG) + +macro(upm_SWIG_PYTHON) + if(BUILDSWIGPYTHON) + set (CMAKE_C_FLAGS -DSWIGPYTHON=${SWIG_FOUND}) + set_source_files_properties (pyupm_${libname}.i PROPERTIES CPLUSPLUS ON) + swig_add_module (pyupm_${libname} python pyupm_${libname}.i ${libname}.cxx) + swig_link_libraries (pyupm_${libname} ${PYTHON_LIBRARIES} ${MAA_LIBRARIES}) + target_include_directories ( ${SWIG_MODULE_pyupm_${libname}_REAL_NAME} + PUBLIC + "${PYTHON_INCLUDE_PATH}" + "${PYTHON_INCLUDE_DIRS}" + ) + install (FILES ${CMAKE_CURRENT_BINARY_DIR}/_pyupm_${libname}.so + ${CMAKE_CURRENT_BINARY_DIR}/pyupm_${libname}.py + DESTINATION lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages/ + COMPONENT ${libname}) + endif() +endmacro() + +macro(upm_SWIG_NODE) + if(BUILDSWIGNODE) + set (CMAKE_CXX_FLAGS -DBUILDING_NODE_EXTENSION) + set_source_files_properties (jsupm_${libname}.i PROPERTIES CPLUSPLUS ON) + set_source_files_properties (jsupm_${libname}.i PROPERTIES SWIG_FLAGS "-node") + swig_add_module (jsupm_${libname} javascript jsupm_${libname}.i ${libname}.cxx) + swig_link_libraries (jsupm_${libname} ${MAA_LIBRARIES} ${NODE_LIBRARIES}) + target_include_directories ( ${SWIG_MODULE_jsupm_${libname}_REAL_NAME} + PUBLIC + "${NODE_INCLUDE_DIRS}" + ) + set_target_properties (jsupm_${libname} PROPERTIES + PREFIX "" + SUFFIX ".node" + ) + createpackagejson(${libname}) + install (FILES ${CMAKE_CURRENT_BINARY_DIR}/jsupm_${libname}.node + DESTINATION lib/node_modules/jsupm_${libname} COMPONENT ${libname}) + endif() +endmacro() + +macro(upm_doxygen) + if (DOXYGEN_FOUND) + set (CMAKE_SWIG_FLAGS -DDOXYGEN=${DOXYGEN_FOUND}) + add_custom_command (OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${libname}_doc.i + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/../doxy2swig.py -n + ${CMAKE_BINARY_DIR}/xml/${libname}_8h.xml + ${CMAKE_CURRENT_BINARY_DIR}/${libname}_doc.i + DEPENDS ${CMAKE_BINARY_DIR}/xml/${libname}_8h.xml + ) + add_custom_target (${libname}doc_i DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${libname}_doc.i) + add_dependencies (${libname}doc_i doc) + add_dependencies (${SWIG_MODULE_pyupm_${libname}_REAL_NAME} ${libname}doc_i) + endif () +endmacro() + +if (SWIG_FOUND) + if(BUILDSWIGPYTHON) + find_package (PythonLibs) + string (REPLACE "." ";" PYTHON_VERSION_LIST ${PYTHONLIBS_VERSION_STRING}) + list (GET PYTHON_VERSION_LIST 0 PYTHON_VERSION_MAJOR) + list (GET PYTHON_VERSION_LIST 1 PYTHON_VERSION_MINOR) + endif(BUILDSWIGPYTHON) + if(BUILDSWIGNODE) + find_path (NODE_ROOT_DIR "node/node.h") + set (NODE_INCLUDE_DIRS + ${NODE_ROOT_DIR}/src + ${NODE_ROOT_DIR}/node + ${NODE_ROOT_DIR}/deps/v8/include + ${NODE_ROOT_DIR}/deps/uv/include + ) + macro(createpackagejson) + configure_file (${PROJECT_SOURCE_DIR}/src/package.json.in ${CMAKE_CURRENT_BINARY_DIR}/package.json @ONLY) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/package.json + DESTINATION lib/node_modules/jsupm_${libname} COMPONENT ${libname}) + endmacro() + + endif(BUILDSWIGNODE) +endif() + +macro(upm_module_init) + include_directories (${MAA_INCLUDE_DIR} .) + target_link_libraries (${libname} ${MAA_LIBRARIES}) + set_target_properties(${libname} PROPERTIES PREFIX "libupm-") + upm_create_install_pkgconfig (upm-${libname}.pc lib${LIB_SUFFIX}/pkgconfig) + if (SWIG_FOUND) + upm_swig_python() + upm_swig_node() + upm_doxygen() + endif() + install (TARGETS ${libname} DESTINATION lib COMPONENT ${libname}) + install (FILES ${libname}.h DESTINATION include/upm COMPONENT ${libname}) + + if (IPK) + cpack_add_component (${libname} DISPLAY_NAME ${libname} REQUIRED INSTALL_TYPES all) + set(CPACK_COMPONENT_${libname}_DESCRIPTION "${libdescription}") + endif() +endmacro(upm_module_init) + +subdirlist(SUBDIRS ${CMAKE_CURRENT_SOURCE_DIR}) +foreach(subdir ${SUBDIRS}) + add_subdirectory(${subdir}) +endforeach()