4197f23a7a05b5e379d95e96a01676b2d8a08313
[contrib/mraa.git] / src / CMakeLists.txt
1 include_directories(
2   ${PROJECT_SOURCE_DIR}/api
3   ${PROJECT_SOURCE_DIR}/api/maa
4   ${PROJECT_SOURCE_DIR}/include
5 )
6
7 set (maa_LIB_SRCS
8   ${PROJECT_SOURCE_DIR}/src/maa.c
9   ${PROJECT_SOURCE_DIR}/src/gpio/gpio.c
10   ${PROJECT_SOURCE_DIR}/src/i2c/i2c.c
11   ${PROJECT_SOURCE_DIR}/src/i2c/smbus.c
12   ${PROJECT_SOURCE_DIR}/src/pwm/pwm.c
13   ${PROJECT_SOURCE_DIR}/src/spi/spi.c
14   ${PROJECT_SOURCE_DIR}/src/aio/aio.c
15   ${PROJECT_SOURCE_DIR}/src/intel_galileo_rev_d.c
16   ${PROJECT_SOURCE_DIR}/src/intel_galileo_rev_g.c
17 # autogenerated version file
18   ${CMAKE_CURRENT_BINARY_DIR}/version.c
19 )
20
21 set (maa_LIB_GLOB_HEADERS
22   ${PROJECT_SOURCE_DIR}/api/maa.h
23   ${PROJECT_SOURCE_DIR}/api/maa.hpp
24 )
25
26 add_library (maa SHARED ${maa_LIB_SRCS})
27 target_link_libraries (maa ${CMAKE_THREAD_LIBS_INIT})
28
29 set_target_properties(
30    maa
31    PROPERTIES
32    SOVERSION ${maa_VERSION_MAJOR}
33    VERSION ${maa_VERSION_STRING}
34 )
35 install (FILES ${maa_LIB_GLOB_HEADERS} DESTINATION include/)
36 install (DIRECTORY ${PROJECT_SOURCE_DIR}/api/maa/ DESTINATION include/maa)
37
38 macro (maa_CREATE_INSTALL_PKGCONFIG generated_file install_location)
39   configure_file (${generated_file}.cmake ${CMAKE_CURRENT_BINARY_DIR}/${generated_file} @ONLY)
40   install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${generated_file} DESTINATION ${install_location})
41 endmacro (maa_CREATE_INSTALL_PKGCONFIG)
42 maa_create_install_pkgconfig (maa.pc lib${LIB_SUFFIX}/pkgconfig)
43
44 install (TARGETS maa DESTINATION lib)
45
46 if (DOXYGEN_FOUND)
47   set (CMAKE_SWIG_FLAGS -DDOXYGEN=${DOXYGEN_FOUND})
48   set (DOCCLASSES aio gpio i2c pwm spi)
49   foreach (_file ${DOCCLASSES})
50     add_custom_command (OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_file}_class_doc.i
51       COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/doxy2swig.py -n
52         ${CMAKE_BINARY_DIR}/xml/classmaa_1_1_${_file}.xml
53         ${CMAKE_CURRENT_BINARY_DIR}/${_file}_class_doc.i
54       DEPENDS ${CMAKE_BINARY_DIR}/xml/classmaa_1_1_${_file}.xml
55     )
56     add_custom_target (${_file}class_doc_i DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${_file}_class_doc.i)
57     add_dependencies (${_file}class_doc_i doc)
58   endforeach ()
59   set (DOCFILES common ${DOCCLASSES})
60   foreach (_file ${DOCFILES})
61     add_custom_command (OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_file}_doc.i
62       COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/doxy2swig.py -n
63         ${CMAKE_BINARY_DIR}/xml/${_file}_8h.xml
64         ${CMAKE_CURRENT_BINARY_DIR}/${_file}_doc.i
65       DEPENDS ${CMAKE_BINARY_DIR}/xml/${_file}_8h.xml
66     )
67     add_custom_target (${_file}doc_i DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${_file}_doc.i)
68     add_dependencies (${_file}doc_i doc)
69   endforeach ()
70 endif ()
71
72 if (BUILDSWIG)
73   find_package (SWIG)
74   if (SWIG_FOUND)
75     include (${SWIG_USE_FILE})
76     set_source_files_properties (maa.i PROPERTIES SWIG_FLAGS "-I${CMAKE_BINARY_DIR}/src")
77
78     if (BUILDSWIGPYTHON)
79       add_subdirectory (python)
80     endif ()
81     if (BUILDSWIGNODE)
82       add_subdirectory (javascript)
83     endif ()
84   endif ()
85 endif ()