CMakeLists.txt: add DEBUG define when doing a debug build
[contrib/mraa.git] / CMakeLists.txt
1 cmake_minimum_required (VERSION 2.8)
2 project (mraa)
3
4 FIND_PACKAGE (Threads)
5
6 set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -fno-omit-frame-pointer -DDEBUG")
7 set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall")
8 set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS} -DDEBUG")
9
10 # Appends the cmake/modules path to MAKE_MODULE_PATH variable.
11 set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH})
12
13 # Make a version file containing the current version from git.
14 include (GetGitRevisionDescription)
15 git_describe (VERSION "--tags")
16 if ("x_${VERSION}" STREQUAL "x_GIT-NOTFOUND")
17   message (WARNING " - Install git to compile a production libmraa!")
18   set (VERSION "v0.5.0-dirty")
19 endif ()
20
21 message (INFO " - MRAA Version ${VERSION}")
22
23 #parse the version information into pieces.
24 string (REGEX REPLACE "^v([0-9]+)\\..*" "\\1" VERSION_MAJOR "${VERSION}")
25 string (REGEX REPLACE "^v[0-9]+\\.([0-9]+).*" "\\1" VERSION_MINOR "${VERSION}")
26 string (REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" VERSION_PATCH "${VERSION}")
27 string (REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.[0-9]+\\-([0-9]+).*" "\\1" VERSION_COMMIT "${VERSION}")
28 string (REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.[0-9]+-[0-9]+\\-(.*)" "\\1" VERSION_SHA1 "${VERSION}")
29 set (VERSION_SHORT "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
30
31 if ("${VERSION_COMMIT}" MATCHES "^v.*")
32   set (VERSION_COMMIT "")
33 endif()
34
35 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/version.c.in
36                 ${CMAKE_CURRENT_BINARY_DIR}/src/version.c)
37
38 # this is the library version, independant of git revision
39 set (mraa_VERSION_MAJOR ${VERSION_MAJOR})
40 set (mraa_VERSION_MINOR ${VERSION_MINOR})
41 set (mraa_VERSION_PATCH ${VERSION_PATCH})
42 set (mraa_VERSION_STRING ${mraa_VERSION_MAJOR}.${mraa_VERSION_MINOR}.${mraa_VERSION_PATCH})
43
44 set (CMAKE_SWIG_FLAGS "")
45
46 find_path (SYSTEM_USR_DIR "stdlib.h")
47 include_directories (${SYSTEM_USR_DIR})
48
49 option (GTEST "Build all gtests." OFF)
50 option (BUILDDOC "Build all doc." OFF)
51 option (BUILDSWIG "Build swig modules." ON)
52 option (BUILDSWIGPYTHON "Build swig python modules." ON)
53 option (BUILDSWIGNODE "Build swig node modules." ON)
54 option (IPK "Generate IPK using CPack" OFF)
55
56 if (GTEST)
57   enable_testing ()
58   add_subdirectory (tests)
59 endif ()
60
61 if (BUILDDOC)
62   # add a target to generate API documentation with Doxygen
63   find_package (Doxygen)
64   if (DOXYGEN_FOUND)
65     configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
66     add_custom_target (doc
67       ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
68       WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
69       COMMENT "Generating API documentation with Doxygen" VERBATIM
70     )
71   endif (DOXYGEN_FOUND)
72 endif ()
73
74 if (IPK)
75   include (TargetArch)
76   target_architecture (DETECTED_ARCH)
77   message( INFO " - Target arch is ${DETECTED_ARCH}")
78
79   set(CPACK_GENERATOR "DEB" "TGZ")
80   set(OPKG_ARCH ${DETECTED_ARCH})
81   set(CPACK_BINARY_DIR ${CMAKE_BINARY_DIR})
82   set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Intel IoT-Devkit") #required
83   set(mraa_PACKAGE_ON_TAG ".")
84   if ("${VERSION_COMMIT}" STREQUAL "")
85     set(mraa_PACKAGE_ON_TAG "")
86   endif()
87   set(CPACK_PACKAGE_VERSION 
88       "${mraa_VERSION_MAJOR}.${mraa_VERSION_MINOR}.${mraa_VERSION_PATCH}${mraa_PACKAGE_ON_TAG}${VERSION_COMMIT}")
89   set(CPACK_PACKAGE_NAME "libmraa${mraa_VERSION_MAJOR}")
90   set(CPACK_DEBIAN_PACKAGE_SECTION "libs")
91   set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${DETECTED_ARCH})
92   set(CPACK_SYSTEM_NAME ${DETECTED_ARCH})
93   set(CPACK_DEBIAN_PACKAGE_PROVIDES "libmraa-dev, libmraa-dbg, libmraa-doc, libmaa-dev, libmaa-dbg, libmaa-doc, libmaa0")
94   set(CPACK_DEBIAN_PACKAGE_REPLACES ${CPACK_DEBIAN_PACKAGE_PROVIDES})
95   set(CPACK_DEBIAN_PACKAGE_CONFLICTS ${CPACK_DEBIAN_PACKAGE_PROVIDES})
96   set(WDIR "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}")
97   include (CPack)
98 endif()
99
100 add_subdirectory (src)
101 add_subdirectory (examples)