08316df8f90a845e3ae018cadc31433faf6b1972
[contrib/upm.git] / CMakeLists.txt
1 cmake_minimum_required (VERSION 2.8)
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 libmaa version to be the required version
12 pkg_check_modules (MAA REQUIRED maa>=0.2.6)
13 message (INFO " found libmaa version: ${MAA_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 libmaa!")
23   set (VERSION "v0.1.2-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 ${maa_VERSION_MAJOR}.${maa_VERSION_MINOR}.${maa_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
49 if (BUILDDOC)
50   # add a target to generate API documentation with Doxygen
51   find_package (Doxygen)
52   if (DOXYGEN_FOUND)
53     configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
54     add_custom_target (doc
55       ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
56       WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
57       COMMENT "Generating API documentation with Doxygen" VERBATIM
58     )
59   endif (DOXYGEN_FOUND)
60 endif()
61
62 if (IPK)
63   include (TargetArch)
64   target_architecture (DETECTED_ARCH)
65   message( INFO " - Target arch is ${DETECTED_ARCH}")
66
67   set(CPACK_GENERATOR "DEB")
68   set(OPKG_ARCH ${DETECTED_ARCH})
69   set(CPACK_BINARY_DIR ${CMAKE_BINARY_DIR})
70   set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Intel IoT-Devkit") #required
71   set(upm_PACKAGE_ON_TAG ".")
72   if ("${VERSION_COMMIT}" STREQUAL "")
73     set(upm_PACKAGE_ON_TAG "")
74   endif()
75   set(CPACK_PACKAGE_VERSION
76       "${upm_VERSION_MAJOR}.${upm_VERSION_MINOR}.${upm_VERSION_PATCH}${upm_PACKAGE_ON_TAG}${VERSION_COMMIT}")
77   set(CPACK_PACKAGE_NAME "upm")
78   set(CPACK_DEBIAN_PACKAGE_SECTION "libs")
79   set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${DETECTED_ARCH})
80   set(CPACK_SYSTEM_NAME ${DETECTED_ARCH})
81   set(CPACK_DEBIAN_PACKAGE_DEPENDS "libmaa0 (>= ${MAA_VERSION})")
82   set(CPACK_DEBIAN_PACKAGE_PROVIDES "upm-dev, upm-dbg, upm-doc")
83   set(CPACK_DEBIAN_PACKAGE_REPLACES ${CPACK_DEBIAN_PACKAGE_PROVIDES})
84   set(CPACK_DEBIAN_PACKAGE_CONFLICTS ${CPACK_DEBIAN_PACKAGE_PROVIDES})
85   set(WDIR "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}")
86   include (CPack)
87 endif()
88
89 add_subdirectory (src)
90 add_subdirectory (examples)