-cmake_minimum_required (VERSION 2.8)
+cmake_minimum_required (VERSION 2.8.11)
project (upm)
find_package (SWIG)
set (upm_VERSION_MAJOR ${VERSION_MAJOR})
set (upm_VERSION_MINOR ${VERSION_MINOR})
set (upm_VERSION_PATCH ${VERSION_PATCH})
-set (upm_VERSION_STRING ${maa_VERSION_MAJOR}.${maa_VERSION_MINOR}.${maa_VERSION_PATCH})
+set (upm_VERSION_STRING ${upm_VERSION_MAJOR}.${upm_VERSION_MINOR}.${upm_VERSION_PATCH})
set (CMAKE_SWIG_FLAGS "")
option (IPK "Generate IPK using CPack" OFF)
option (BUILDDOC "Build all doc." OFF)
+option (BUILDSWIG "Build swig modules." ON)
+option (BUILDSWIGPYTHON "Build swig python modules." ON)
+option (BUILDSWIGNODE "Build swig node modules." ON)
if (BUILDDOC)
# add a target to generate API documentation with Doxygen
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})