common.hpp: use common.hpp instead of renaming C functions in interface
[contrib/mraa.git] / src / CMakeLists.txt
1 include_directories(
2   ${PROJECT_SOURCE_DIR}/api
3   ${PROJECT_SOURCE_DIR}/api/mraa
4   ${PROJECT_SOURCE_DIR}/include
5 )
6
7 set (mraa_LIB_SRCS
8   ${PROJECT_SOURCE_DIR}/src/mraa.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 (mraa_LIB_GLOB_HEADERS
22   ${PROJECT_SOURCE_DIR}/api/mraa.h
23   ${PROJECT_SOURCE_DIR}/api/mraa.hpp
24 )
25
26 add_library (mraa SHARED ${mraa_LIB_SRCS})
27 target_link_libraries (mraa ${CMAKE_THREAD_LIBS_INIT})
28
29 set_target_properties(
30    mraa
31    PROPERTIES
32    SOVERSION ${mraa_VERSION_MAJOR}
33    VERSION ${mraa_VERSION_STRING}
34 )
35 install (FILES ${mraa_LIB_GLOB_HEADERS} DESTINATION include/)
36 install (DIRECTORY ${PROJECT_SOURCE_DIR}/api/mraa/ DESTINATION include/mraa)
37
38 macro (mraa_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 (mraa_CREATE_INSTALL_PKGCONFIG)
42 mraa_create_install_pkgconfig (mraa.pc lib${LIB_SUFFIX}/pkgconfig)
43
44 install (TARGETS mraa DESTINATION lib)
45
46 if (DOXYGEN_FOUND)
47   set (CMAKE_SWIG_FLAGS -DDOXYGEN=${DOXYGEN_FOUND})
48   set (DOCCLASSES aio gpio i2c pwm spi)
49   # CPP class headers
50   foreach (_file ${DOCCLASSES})
51     add_custom_command (OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_file}_class_doc.i
52       COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/doxy2swig.py -n
53         ${CMAKE_BINARY_DIR}/xml/classmraa_1_1_${_file}.xml
54         ${CMAKE_CURRENT_BINARY_DIR}/${_file}_class_doc.i
55       DEPENDS ${CMAKE_BINARY_DIR}/xml/classmraa_1_1_${_file}.xml
56     )
57     add_custom_target (${_file}class_doc_i DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${_file}_class_doc.i)
58     add_dependencies (${_file}class_doc_i doc)
59   endforeach ()
60   # C header files
61   set (DOCFILES common ${DOCCLASSES})
62   foreach (_file ${DOCFILES})
63     add_custom_command (OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_file}_doc.i
64       COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/doxy2swig.py -n
65         ${CMAKE_BINARY_DIR}/xml/${_file}_8h.xml
66         ${CMAKE_CURRENT_BINARY_DIR}/${_file}_doc.i
67       DEPENDS ${CMAKE_BINARY_DIR}/xml/${_file}_8h.xml
68     )
69     add_custom_target (${_file}doc_i DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${_file}_doc.i)
70     add_dependencies (${_file}doc_i doc)
71   endforeach ()
72   # CPP common header
73   add_custom_command (OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/common_hpp_doc.i
74     COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/doxy2swig.py -n
75       ${CMAKE_BINARY_DIR}/xml/common_8hpp.xml
76       ${CMAKE_CURRENT_BINARY_DIR}//common_hpp_doc.i
77     DEPENDS ${CMAKE_BINARY_DIR}/xml/common_8hpp.xml
78   )
79   add_custom_target (common_hpp_doc_i DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/common_hpp_doc.i)
80   add_dependencies (common_hpp_doc_i doc)
81 endif ()
82
83 if (BUILDSWIG)
84   find_package (SWIG)
85   if (SWIG_FOUND)
86     include (${SWIG_USE_FILE})
87     set_source_files_properties (mraa.i PROPERTIES SWIG_FLAGS "-I${CMAKE_BINARY_DIR}/src")
88
89     if (BUILDSWIGPYTHON)
90       add_subdirectory (python)
91     endif ()
92     if (BUILDSWIGNODE)
93       add_subdirectory (javascript)
94     endif ()
95   endif ()
96 endif ()