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)
59 option (INSTALLGPIOTOOL "Install gpio tool" OFF)
60 option (BUILDARCH "Override architecture to build for - override" OFF)
64 target_architecture (DETECTED_ARCH)
65 message( INFO " - Target arch is ${DETECTED_ARCH}")
67 set (DETECTED_ARCH ${BUILDARCH})
68 message( INFO " - Override arch is ${DETECTED_ARCH}")
71 if (DETECTED_ARCH STREQUAL "i586" OR DETECTED_ARCH STREQUAL "x86_64"
72 OR DETECTED_ARCH STREQUAL "i386")
74 elseif (DETECTED_ARCH MATCHES "arm.*")
77 message(FATAL_ERROR "Only x86 and arm platforms currently supported")
82 add_subdirectory (tests)
86 # add a target to generate API documentation with Doxygen
87 find_package (Doxygen)
89 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
90 add_custom_target (doc
91 ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
92 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
93 COMMENT "Generating API documentation with Doxygen" VERBATIM
99 # Get target package arch from Yocto ADT sysroot if set or host OS, mapping to Ubuntu name if necessary
100 if (DEFINED ENV{OECORE_TARGET_SYSROOT})
101 GET_FILENAME_COMPONENT (DETECTED_SYSROOT $ENV{OECORE_TARGET_SYSROOT} NAME)
102 string (REGEX REPLACE "-poky-linux" "" TARGET_ARCH "${DETECTED_SYSROOT}")
104 # debian uses amd64 to denote x86_64
105 if (DETECTED_ARCH STREQUAL "x86_64")
106 set (TARGET_ARCH "amd64")
108 set (TARGET_ARCH ${DETECTED_ARCH})
111 message (INFO " - Package arch is ${TARGET_ARCH}")
113 set(CPACK_GENERATOR "DEB" "TGZ")
114 set(OPKG_ARCH ${TARGET_ARCH})
115 set(CPACK_BINARY_DIR ${CMAKE_BINARY_DIR})
116 set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Intel IoT-Devkit") #required
117 set(mraa_PACKAGE_ON_TAG ".")
118 if ("${VERSION_COMMIT}" STREQUAL "")
119 set(mraa_PACKAGE_ON_TAG "")
121 set(CPACK_PACKAGE_VERSION
122 "${mraa_VERSION_MAJOR}.${mraa_VERSION_MINOR}.${mraa_VERSION_PATCH}${mraa_PACKAGE_ON_TAG}${VERSION_COMMIT}")
123 set(CPACK_PACKAGE_NAME "libmraa${mraa_VERSION_MAJOR}")
124 set(CPACK_DEBIAN_PACKAGE_SECTION "libs")
125 set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${TARGET_ARCH})
126 set(CPACK_SYSTEM_NAME ${TARGET_ARCH})
127 set(CPACK_DEBIAN_PACKAGE_PROVIDES "libmraa-dev, libmraa-dbg, libmraa-doc")
128 set(CPACK_DEBIAN_PACKAGE_REPLACES ${CPACK_DEBIAN_PACKAGE_PROVIDES})
129 set(CPACK_DEBIAN_PACKAGE_CONFLICTS ${CPACK_DEBIAN_PACKAGE_PROVIDES})
130 set(WDIR "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}")
134 add_subdirectory (src)
135 add_subdirectory (examples)