Private
Public Access
2
0

doxygen: generic and more reliable doxygen/swig autodoc integration

Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
This commit is contained in:
Brendan Le Foll
2014-04-30 10:50:44 +01:00
parent 804c4a437d
commit 0450c2e159
7 changed files with 57 additions and 37 deletions

View File

@@ -33,10 +33,6 @@ set (maa_VERSION_MINOR ${VERSION_MINOR})
set (maa_VERSION_PATCH ${VERSION_PATCH}) set (maa_VERSION_PATCH ${VERSION_PATCH})
set (maa_VERSION_STRING ${maa_VERSION_MAJOR}.${maa_VERSION_MINOR}.${maa_VERSION_PATCH}) set (maa_VERSION_STRING ${maa_VERSION_MAJOR}.${maa_VERSION_MINOR}.${maa_VERSION_PATCH})
set (SWIG_EXECUTABLE /usr/bin/swig)
find_package (SWIG REQUIRED)
include (${SWIG_USE_FILE})
set (CMAKE_SWIG_FLAGS "") set (CMAKE_SWIG_FLAGS "")
option (test "Build all tests." OFF) option (test "Build all tests." OFF)

View File

@@ -40,13 +40,33 @@ set_target_properties(
install (FILES ${maa_LIB_HEADERS} DESTINATION include/maa) install (FILES ${maa_LIB_HEADERS} DESTINATION include/maa)
install (FILES ${maa_LIB_KERNEL} DESTINATION include/maa/linux) install (FILES ${maa_LIB_KERNEL} DESTINATION include/maa/linux)
macro(maa_CREATE_INSTALL_PKGCONFIG generated_file install_location) macro (maa_CREATE_INSTALL_PKGCONFIG generated_file install_location)
configure_file(${generated_file}.cmake ${CMAKE_CURRENT_BINARY_DIR}/${generated_file} @ONLY) configure_file (${generated_file}.cmake ${CMAKE_CURRENT_BINARY_DIR}/${generated_file} @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${generated_file} DESTINATION ${install_location}) install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${generated_file} DESTINATION ${install_location})
endmacro(maa_CREATE_INSTALL_PKGCONFIG) endmacro (maa_CREATE_INSTALL_PKGCONFIG)
maa_create_install_pkgconfig(maa.pc lib${LIB_SUFFIX}/pkgconfig) maa_create_install_pkgconfig (maa.pc lib${LIB_SUFFIX}/pkgconfig)
install (TARGETS maa DESTINATION lib) install (TARGETS maa DESTINATION lib)
add_subdirectory (python) if (DOXYGEN_FOUND)
add_subdirectory (javascript) set (CMAKE_SWIG_FLAGS -DDOXYGEN=${DOXYGEN_FOUND})
set (DOCFILES maa pwm i2c gpio)
foreach (_file ${DOCFILES})
add_custom_command (OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_file}_doc.i
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/doxy2swig.py -n
${CMAKE_BINARY_DIR}/xml/${_file}_8h.xml
${CMAKE_CURRENT_BINARY_DIR}/${_file}_doc.i
DEPENDS ${CMAKE_BINARY_DIR}/xml/${_file}_8h.xml
)
add_custom_target (${_file}doc_i DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${_file}_doc.i)
add_dependencies (${_file}doc_i doc)
endforeach ()
endif ()
find_package (SWIG)
if (SWIG_FOUND)
include (${SWIG_USE_FILE})
add_subdirectory (python)
add_subdirectory (javascript)
endif ()

View File

@@ -1,25 +1,31 @@
FIND_PATH(NODE_ROOT_DIR "node/node.h") find_path (NODE_ROOT_DIR "node/node.h")
set(NODE_INCLUDE_DIRS set (NODE_INCLUDE_DIRS
${NODE_ROOT_DIR}/src ${NODE_ROOT_DIR}/src
${NODE_ROOT_DIR}/node ${NODE_ROOT_DIR}/node
${NODE_ROOT_DIR}/deps/v8/include ${NODE_ROOT_DIR}/deps/v8/include
${NODE_ROOT_DIR}/deps/uv/include ${NODE_ROOT_DIR}/deps/uv/include
) )
include_directories( include_directories (
${NODE_INCLUDE_DIRS} ${NODE_INCLUDE_DIRS}
/usr/include/node /usr/include/node
${CMAKE_CURRENT_SOURCE_DIR}/.. ${CMAKE_CURRENT_SOURCE_DIR}/..
) )
SET_SOURCE_FILES_PROPERTIES(maajs.i PROPERTIES SWIG_FLAGS "-node") set_source_files_properties (maajs.i PROPERTIES SWIG_FLAGS "-node")
SET_SOURCE_FILES_PROPERTIES(maajs.i PROPERTIES CPLUSPLUS ON) set_source_files_properties (maajs.i PROPERTIES CPLUSPLUS ON)
SWIG_ADD_MODULE(maajs javascript maajs.i ${maa_LIB_SRCS}) swig_add_module (maajs javascript maajs.i ${maa_LIB_SRCS})
SWIG_LINK_LIBRARIES(maajs ${NODE_LIBRARIES}) swig_link_libraries (maajs ${NODE_LIBRARIES})
set_target_properties(maajs PROPERTIES if (DOXYGEN_FOUND)
foreach (_file ${DOCFILES})
add_dependencies (${SWIG_MODULE_maajs_REAL_NAME} ${_file}doc_i)
endforeach ()
endif ()
set_target_properties (maajs PROPERTIES
PREFIX "" PREFIX ""
SUFFIX ".node" SUFFIX ".node"
) )

View File

@@ -1,8 +1,19 @@
%module maajs %module (docstring="Javascript interface to libmaa") maajs
%{ %{
#include "maa.h" #include "maa.h"
%} %}
%include <node.i> %include <node.i>
%rename("%(strip:[maa_])s") "";
%feature("autodoc", "1");
#ifdef DOXYGEN
%include ../maa_doc.i
%include ../gpio_doc.i
%include ../i2c_doc.i
%include ../pwm_doc.i
#endif
%include ../maa.i %include ../maa.i

View File

@@ -6,24 +6,11 @@ include_directories(
${PYTHON_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIRS}
) )
if (DOXYGEN_FOUND)
set (CMAKE_SWIG_FLAGS -DDOXYGEN=${DOXYGEN_FOUND})
endif ()
swig_add_module (pymaa python pymaa.i ${maa_LIB_SRCS}) swig_add_module (pymaa python pymaa.i ${maa_LIB_SRCS})
swig_link_libraries (pymaa ${PYTHON_LIBRARIES}) swig_link_libraries (pymaa ${PYTHON_LIBRARIES})
if (DOXYGEN_FOUND) if (DOXYGEN_FOUND)
set (DOCFILES maa pwm i2c gpio)
foreach (_file ${DOCFILES}) foreach (_file ${DOCFILES})
add_custom_command (OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_file}_doc.i
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/doxy2swig.py -n
${CMAKE_BINARY_DIR}/xml/${_file}_8h.xml
${CMAKE_CURRENT_BINARY_DIR}/${_file}_doc.i
DEPENDS ${CMAKE_BINARY_DIR}/xml/${_file}_8h.xml
)
add_custom_target (${_file}doc_i DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${_file}_doc.i)
add_dependencies (${SWIG_MODULE_pymaa_REAL_NAME} ${_file}doc_i) add_dependencies (${SWIG_MODULE_pymaa_REAL_NAME} ${_file}doc_i)
endforeach () endforeach ()

View File

@@ -5,10 +5,10 @@
%feature("autodoc", "1"); %feature("autodoc", "1");
#ifdef DOXYGEN #ifdef DOXYGEN
%include maa_doc.i %include ../maa_doc.i
%include gpio_doc.i %include ../gpio_doc.i
%include i2c_doc.i %include ../i2c_doc.i
%include pwm_doc.i %include ../pwm_doc.i
#endif #endif
%include ../maa.i %include ../maa.i