README.md: fix broken links
[contrib/upm.git] / CMakeLists.txt
1 cmake_minimum_required (VERSION 2.8.11)
2 project (upm)
3
4 find_package (SWIG)
5 if (SWIG_FOUND)
6   include (${SWIG_USE_FILE})
7 endif ()
8
9 find_package (Threads REQUIRED)
10 find_package (PkgConfig REQUIRED)
11 # force the libmraa version to be the required version
12 pkg_check_modules (MRAA REQUIRED mraa>=0.4.0)
13 message (INFO " found libmraa version: ${MRAA_VERSION}")
14
15 # Appends the cmake/modules path to MAKE_MODULE_PATH variable.
16 set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH})
17
18 # Make a version file containing the current version from git.
19 include (GetGitRevisionDescription)
20 git_describe (VERSION "--tags")
21 if ("x_${VERSION}" STREQUAL "x_GIT-NOTFOUND")
22   message (WARNING " - Install git to compile a production libmraa!")
23   set (VERSION "v0.1.7-dirty")
24 endif ()
25
26 message (INFO " - UPM Version ${VERSION}")
27
28 #parse the version information into pieces.
29 string (REGEX REPLACE "^v([0-9]+)\\..*" "\\1" VERSION_MAJOR "${VERSION}")
30 string (REGEX REPLACE "^v[0-9]+\\.([0-9]+).*" "\\1" VERSION_MINOR "${VERSION}")
31 string (REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" VERSION_PATCH "${VERSION}")
32 string (REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.[0-9]+\\-([0-9]+).*" "\\1" VERSION_COMMIT "${VERSION}")
33 string (REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.[0-9]+-[0-9]+\\-(.*)" "\\1" VERSION_SHA1 "${VERSION}")
34
35 if ("${VERSION_COMMIT}" MATCHES "^v.*")
36   set (VERSION_COMMIT "")
37 endif()
38
39 set (upm_VERSION_MAJOR ${VERSION_MAJOR})
40 set (upm_VERSION_MINOR ${VERSION_MINOR})
41 set (upm_VERSION_PATCH ${VERSION_PATCH})
42 set (upm_VERSION_STRING ${upm_VERSION_MAJOR}.${upm_VERSION_MINOR}.${upm_VERSION_PATCH})
43
44 set (CMAKE_SWIG_FLAGS "")
45
46 option (IPK "Generate IPK using CPack" OFF)
47 option (BUILDDOC "Build all doc." OFF)
48 option (BUILDSWIG "Build swig modules." ON)
49 option (BUILDSWIGPYTHON "Build swig python modules." ON)
50 option (BUILDSWIGNODE "Build swig node modules." ON)
51
52 if (BUILDDOC)
53   # add a target to generate API documentation with Doxygen
54   find_package (Doxygen)
55   if (DOXYGEN_FOUND)
56     configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
57     add_custom_target (doc
58       ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
59       WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
60       COMMENT "Generating API documentation with Doxygen" VERBATIM
61     )
62   endif (DOXYGEN_FOUND)
63 endif()
64
65 if (IPK)
66   include (TargetArch)
67   target_architecture (DETECTED_ARCH)
68   message( INFO " - Target arch is ${DETECTED_ARCH}")
69
70   set(CPACK_GENERATOR "DEB")
71   set(OPKG_ARCH ${DETECTED_ARCH})
72   set(CPACK_BINARY_DIR ${CMAKE_BINARY_DIR})
73   set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Intel IoT-Devkit") #required
74   set(upm_PACKAGE_ON_TAG ".")
75   if ("${VERSION_COMMIT}" STREQUAL "")
76     set(upm_PACKAGE_ON_TAG "")
77   endif()
78   set(CPACK_PACKAGE_VERSION
79       "${upm_VERSION_MAJOR}.${upm_VERSION_MINOR}.${upm_VERSION_PATCH}${upm_PACKAGE_ON_TAG}${VERSION_COMMIT}")
80   set(CPACK_PACKAGE_NAME "upm")
81   set(CPACK_DEBIAN_PACKAGE_SECTION "libs")
82   set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${DETECTED_ARCH})
83   set(CPACK_SYSTEM_NAME ${DETECTED_ARCH})
84   set(CPACK_DEBIAN_PACKAGE_DEPENDS "libmraa0 (>= ${MRAA_VERSION})")
85   set(CPACK_DEBIAN_PACKAGE_PROVIDES "upm-dev, upm-dbg, upm-doc")
86   set(CPACK_DEBIAN_PACKAGE_REPLACES ${CPACK_DEBIAN_PACKAGE_PROVIDES})
87   set(CPACK_DEBIAN_PACKAGE_CONFLICTS ${CPACK_DEBIAN_PACKAGE_PROVIDES})
88   set(WDIR "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}")
89   include (CPack)
90 endif()
91
92 add_subdirectory (src)
93 add_subdirectory (examples)