1 cmake_minimum_required (VERSION 2.8)
4 FIND_PACKAGE (Threads REQUIRED)
6 set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -fno-omit-frame-pointer")
7 set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall")
8 set (LIB_INSTALL_DIR "lib${LIB_SUFFIX}" CACHE PATH "Installation path for libraries")
10 # Set CMAKE_LIB_INSTALL_DIR if not defined
11 include(GNUInstallDirs)
13 # Appends the cmake/modules path to MAKE_MODULE_PATH variable.
14 set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH})
16 # Make a version file containing the current version from git.
17 include (GetGitRevisionDescription)
18 git_describe (VERSION "--tags")
19 if ("x_${VERSION}" STREQUAL "x_GIT-NOTFOUND")
20 message (WARNING " - Install git to compile a production libmraa!")
21 set (VERSION "v0.6.1-dirty")
24 message (INFO " - libmraa Version ${VERSION}")
26 #parse the version information into pieces.
27 string (REGEX REPLACE "^v([0-9]+)\\..*" "\\1" VERSION_MAJOR "${VERSION}")
28 string (REGEX REPLACE "^v[0-9]+\\.([0-9]+).*" "\\1" VERSION_MINOR "${VERSION}")
29 string (REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" VERSION_PATCH "${VERSION}")
30 string (REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.[0-9]+\\-([0-9]+).*" "\\1" VERSION_COMMIT "${VERSION}")
31 string (REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.[0-9]+-[0-9]+\\-(.*)" "\\1" VERSION_SHA1 "${VERSION}")
32 set (VERSION_SHORT "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
34 if ("${VERSION_COMMIT}" MATCHES "^v.*")
35 set (VERSION_COMMIT "")
38 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/version.c.in
39 ${CMAKE_CURRENT_BINARY_DIR}/src/version.c)
41 # this is the library version, independant of git revision
42 set (mraa_VERSION_MAJOR ${VERSION_MAJOR})
43 set (mraa_VERSION_MINOR ${VERSION_MINOR})
44 set (mraa_VERSION_PATCH ${VERSION_PATCH})
45 set (mraa_VERSION_STRING ${mraa_VERSION_MAJOR}.${mraa_VERSION_MINOR}.${mraa_VERSION_PATCH})
47 set (CMAKE_SWIG_FLAGS "")
49 find_path (SYSTEM_USR_DIR "stdlib.h")
50 include_directories (${SYSTEM_USR_DIR})
52 option (GTEST "Build all gtests." OFF)
53 option (BUILDDOC "Build all doc." OFF)
54 option (BUILDSWIG "Build swig modules." ON)
55 option (BUILDSWIGPYTHON "Build swig python modules." ON)
56 option (BUILDSWIGNODE "Build swig node modules." ON)
57 option (IPK "Generate IPK using CPack" OFF)
58 option (BUILDPYTHON3 "Use python3 for building/installing" OFF)
61 target_architecture (DETECTED_ARCH)
62 message( INFO " - Target arch is ${DETECTED_ARCH}")
64 if (DETECTED_ARCH STREQUAL "i586" OR DETECTED_ARCH STREQUAL "x86_64"
65 OR DETECTED_ARCH STREQUAL "i386")
67 elseif (DETECTED_ARCH MATCHES "arm.*")
70 message(FATAL_ERROR "Only x86 and arm platforms currently supported")
75 add_subdirectory (tests)
79 # add a target to generate API documentation with Doxygen
80 find_package (Doxygen)
82 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
83 add_custom_target (doc
84 ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
85 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
86 COMMENT "Generating API documentation with Doxygen" VERBATIM
92 # Get target package arch from Yocto ADT sysroot if set or host OS, mapping to Ubuntu name if necessary
93 if (DEFINED ENV{OECORE_TARGET_SYSROOT})
94 GET_FILENAME_COMPONENT (DETECTED_SYSROOT $ENV{OECORE_TARGET_SYSROOT} NAME)
95 string (REGEX REPLACE "-poky-linux" "" TARGET_ARCH "${DETECTED_SYSROOT}")
97 # debian uses amd64 to denote x86_64
98 if (DETECTED_ARCH STREQUAL "x86_64")
99 set (TARGET_ARCH "amd64")
101 set (TARGET_ARCH ${DETECTED_ARCH})
104 message (INFO " - Package arch is ${TARGET_ARCH}")
106 set(CPACK_GENERATOR "DEB" "TGZ")
107 set(OPKG_ARCH ${TARGET_ARCH})
108 set(CPACK_BINARY_DIR ${CMAKE_BINARY_DIR})
109 set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Intel IoT-Devkit") #required
110 set(mraa_PACKAGE_ON_TAG ".")
111 if ("${VERSION_COMMIT}" STREQUAL "")
112 set(mraa_PACKAGE_ON_TAG "")
114 set(CPACK_PACKAGE_VERSION
115 "${mraa_VERSION_MAJOR}.${mraa_VERSION_MINOR}.${mraa_VERSION_PATCH}${mraa_PACKAGE_ON_TAG}${VERSION_COMMIT}")
116 set(CPACK_PACKAGE_NAME "libmraa${mraa_VERSION_MAJOR}")
117 set(CPACK_DEBIAN_PACKAGE_SECTION "libs")
118 set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${TARGET_ARCH})
119 set(CPACK_SYSTEM_NAME ${TARGET_ARCH})
120 set(CPACK_DEBIAN_PACKAGE_PROVIDES "libmraa-dev, libmraa-dbg, libmraa-doc")
121 set(CPACK_DEBIAN_PACKAGE_REPLACES ${CPACK_DEBIAN_PACKAGE_PROVIDES})
122 set(CPACK_DEBIAN_PACKAGE_CONFLICTS ${CPACK_DEBIAN_PACKAGE_PROVIDES})
123 set(WDIR "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}")
127 add_subdirectory (src)
128 add_subdirectory (examples)