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