cmake_minimum_required (VERSION 2.8)
-project (maa)
+project (mraa)
-set(SWIG_EXECUTABLE /usr/bin/swig)
-FIND_PACKAGE(SWIG REQUIRED)
-INCLUDE(${SWIG_USE_FILE})
+FIND_PACKAGE (Threads)
-SET(CMAKE_SWIG_FLAGS "")
+set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
+set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall")
-option(test "Build all tests." OFF)
+# Appends the cmake/modules path to MAKE_MODULE_PATH variable.
+set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH})
-add_subdirectory (src)
-add_subdirectory (api)
-add_subdirectory (examples)
+# Make a version file containing the current version from git.
+include (GetGitRevisionDescription)
+git_describe (VERSION "--tags")
+if ("x_${VERSION}" STREQUAL "x_GIT-NOTFOUND")
+ message (WARNING " - Install git to compile a production libmraa!")
+ set (VERSION "v0.3.1-dirty")
+endif ()
+
+message (INFO " - MRAA Version ${VERSION}")
+
+#parse the version information into pieces.
+string (REGEX REPLACE "^v([0-9]+)\\..*" "\\1" VERSION_MAJOR "${VERSION}")
+string (REGEX REPLACE "^v[0-9]+\\.([0-9]+).*" "\\1" VERSION_MINOR "${VERSION}")
+string (REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" VERSION_PATCH "${VERSION}")
+string (REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.[0-9]+\\-([0-9]+).*" "\\1" VERSION_COMMIT "${VERSION}")
+string (REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.[0-9]+-[0-9]+\\-(.*)" "\\1" VERSION_SHA1 "${VERSION}")
+set (VERSION_SHORT "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
+
+if ("${VERSION_COMMIT}" MATCHES "^v.*")
+ set (VERSION_COMMIT "")
+endif()
+
+configure_file (${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/version.c.in
+ ${CMAKE_CURRENT_BINARY_DIR}/src/version.c)
+
+# this is the library version, independant of git revision
+set (mraa_VERSION_MAJOR ${VERSION_MAJOR})
+set (mraa_VERSION_MINOR ${VERSION_MINOR})
+set (mraa_VERSION_PATCH ${VERSION_PATCH})
+set (mraa_VERSION_STRING ${mraa_VERSION_MAJOR}.${mraa_VERSION_MINOR}.${mraa_VERSION_PATCH})
-if (test)
+set (CMAKE_SWIG_FLAGS "")
+
+option (GTEST "Build all gtests." OFF)
+option (BUILDDOC "Build all doc." OFF)
+option (BUILDSWIG "Build swig modules." ON)
+option (BUILDSWIGPYTHON "Build swig python modules." ON)
+option (BUILDSWIGNODE "Build swig node modules." ON)
+option (IPK "Generate IPK using CPack" OFF)
+
+if (GTEST)
enable_testing ()
add_subdirectory (tests)
+endif ()
+
+if (BUILDDOC)
+ # add a target to generate API documentation with Doxygen
+ find_package (Doxygen)
+ if (DOXYGEN_FOUND)
+ configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
+ add_custom_target (doc
+ ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMENT "Generating API documentation with Doxygen" VERBATIM
+ )
+ endif (DOXYGEN_FOUND)
+endif ()
+
+if (IPK)
+ include (TargetArch)
+ target_architecture (DETECTED_ARCH)
+ message( INFO " - Target arch is ${DETECTED_ARCH}")
+
+ set(CPACK_GENERATOR "DEB")
+ set(OPKG_ARCH ${DETECTED_ARCH})
+ set(CPACK_BINARY_DIR ${CMAKE_BINARY_DIR})
+ set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Intel IoT-Devkit") #required
+ set(mraa_PACKAGE_ON_TAG ".")
+ if ("${VERSION_COMMIT}" STREQUAL "")
+ set(mraa_PACKAGE_ON_TAG "")
+ endif()
+ set(CPACK_PACKAGE_VERSION
+ "${mraa_VERSION_MAJOR}.${mraa_VERSION_MINOR}.${mraa_VERSION_PATCH}${mraa_PACKAGE_ON_TAG}${VERSION_COMMIT}")
+ set(CPACK_PACKAGE_NAME "libmraa${mraa_VERSION_MAJOR}")
+ set(CPACK_DEBIAN_PACKAGE_SECTION "libs")
+ set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${DETECTED_ARCH})
+ set(CPACK_SYSTEM_NAME ${DETECTED_ARCH})
+ set(CPACK_DEBIAN_PACKAGE_PROVIDES "libmraa-dev, libmraa-dbg, libmraa-doc")
+ set(CPACK_DEBIAN_PACKAGE_REPLACES ${CPACK_DEBIAN_PACKAGE_PROVIDES})
+ set(CPACK_DEBIAN_PACKAGE_CONFLICTS ${CPACK_DEBIAN_PACKAGE_PROVIDES})
+ set(WDIR "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}")
+ include (CPack)
endif()
+
+add_subdirectory (src)
+add_subdirectory (examples)