doxygen: generic and more reliable doxygen/swig autodoc integration
authorBrendan Le Foll <brendan.le.foll@intel.com>
Wed, 30 Apr 2014 09:50:44 +0000 (10:50 +0100)
committerBrendan Le Foll <brendan.le.foll@intel.com>
Wed, 30 Apr 2014 09:50:44 +0000 (10:50 +0100)
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
CMakeLists.txt
src/CMakeLists.txt
src/doxy2swig.py [moved from src/python/doxy2swig.py with 100% similarity]
src/javascript/CMakeLists.txt
src/javascript/maajs.i
src/python/CMakeLists.txt
src/python/pymaa.i

index f3e0f46..33c622d 100644 (file)
@@ -33,10 +33,6 @@ set (maa_VERSION_MINOR ${VERSION_MINOR})
 set (maa_VERSION_PATCH ${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 "")
 
 option (test "Build all tests." OFF)
index 74051a3..feddc48 100644 (file)
@@ -40,13 +40,33 @@ set_target_properties(
 install (FILES ${maa_LIB_HEADERS} DESTINATION include/maa)
 install (FILES ${maa_LIB_KERNEL} DESTINATION include/maa/linux)
 
-macro(maa_CREATE_INSTALL_PKGCONFIG generated_file install_location)
-  configure_file(${generated_file}.cmake ${CMAKE_CURRENT_BINARY_DIR}/${generated_file} @ONLY)
-  install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${generated_file} DESTINATION ${install_location})
-endmacro(maa_CREATE_INSTALL_PKGCONFIG)
-maa_create_install_pkgconfig(maa.pc lib${LIB_SUFFIX}/pkgconfig)
+macro (maa_CREATE_INSTALL_PKGCONFIG generated_file install_location)
+  configure_file (${generated_file}.cmake ${CMAKE_CURRENT_BINARY_DIR}/${generated_file} @ONLY)
+  install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${generated_file} DESTINATION ${install_location})
+endmacro (maa_CREATE_INSTALL_PKGCONFIG)
+maa_create_install_pkgconfig (maa.pc lib${LIB_SUFFIX}/pkgconfig)
 
 install (TARGETS maa DESTINATION lib)
 
-add_subdirectory (python)
-add_subdirectory (javascript)
+if (DOXYGEN_FOUND)
+  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 ()
similarity index 100%
rename from src/python/doxy2swig.py
rename to src/doxy2swig.py
index f6c3ef2..cdb177e 100644 (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}/node
   ${NODE_ROOT_DIR}/deps/v8/include
   ${NODE_ROOT_DIR}/deps/uv/include
 )
 
-include_directories(
+include_directories (
   ${NODE_INCLUDE_DIRS}                                                                                                                                                        
   /usr/include/node
   ${CMAKE_CURRENT_SOURCE_DIR}/..
 )
 
-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 SWIG_FLAGS "-node")
+set_source_files_properties (maajs.i PROPERTIES CPLUSPLUS ON)
 
-SWIG_ADD_MODULE(maajs javascript maajs.i ${maa_LIB_SRCS})
-SWIG_LINK_LIBRARIES(maajs ${NODE_LIBRARIES})
+swig_add_module (maajs javascript maajs.i ${maa_LIB_SRCS})
+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 ""
   SUFFIX ".node"                                                                                                                                                                  
 )
index c776ba5..e5b31a5 100644 (file)
@@ -1,8 +1,19 @@
-%module maajs
+%module (docstring="Javascript interface to libmaa") maajs
 %{
     #include "maa.h"
 %}
 
 %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
index eb3645b..42cbabc 100644 (file)
@@ -6,24 +6,11 @@ include_directories(
   ${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_link_libraries (pymaa ${PYTHON_LIBRARIES})
 
 if (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 (${SWIG_MODULE_pymaa_REAL_NAME} ${_file}doc_i)
   endforeach ()
 
index 62b9aed..bbbd5a3 100644 (file)
@@ -5,10 +5,10 @@
 %feature("autodoc", "1");
 
 #ifdef DOXYGEN
-%include maa_doc.i
-%include gpio_doc.i
-%include i2c_doc.i
-%include pwm_doc.i
+%include ../maa_doc.i
+%include ../gpio_doc.i
+%include ../i2c_doc.i
+%include ../pwm_doc.i
 #endif
 
 %include ../maa.i