summaryrefslogtreecommitdiff
path: root/peripheral/libupm/CMakeLists.txt
diff options
context:
space:
mode:
authorJianxun Zhang <jianxun.zhang@intel.com>2015-10-13 23:04:50 -0700
committerBruce Beare <bruce.j.beare@intel.com>2015-11-03 23:13:34 -0800
commit765adb95dc941c32690d6c43bc08b9d07d197fcb (patch)
tree1f096eab5f2d518a8db7d9af1e640a0a3377150b /peripheral/libupm/CMakeLists.txt
parent5a83ca460c24fc790a22d087cb4eb584197ecebf (diff)
downloadintel-765adb95dc941c32690d6c43bc08b9d07d197fcb.tar.gz
[libupm] Initial drop of UPM
UPM supports multiple sensors. It is based on libmraa. This initial drop can be got with: git clone https://github.com/intel-iot-devkit/upm.git SHA1:0d2541270ec26a5e8f47a192b773dcdebde9cc83 Change-Id: Ia8d8c0ce96cc72218738cb9d975c8cf9b0371a6c Signed-off-by: Jianxun Zhang <jianxun.zhang@intel.com> Reviewed-on: https://android.intel.com/423699 Reviewed-by: Beare, Bruce J <bruce.j.beare@intel.com> Tested-by: Beare, Bruce J <bruce.j.beare@intel.com>
Diffstat (limited to 'peripheral/libupm/CMakeLists.txt')
-rw-r--r--peripheral/libupm/CMakeLists.txt198
1 files changed, 198 insertions, 0 deletions
diff --git a/peripheral/libupm/CMakeLists.txt b/peripheral/libupm/CMakeLists.txt
new file mode 100644
index 0000000..92ec96e
--- /dev/null
+++ b/peripheral/libupm/CMakeLists.txt
@@ -0,0 +1,198 @@
+cmake_minimum_required (VERSION 2.8.11)
+project (upm)
+
+if ("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
+message("WARNING: building into sources dir can be risky, prefer other directory")
+endif ()
+
+find_package (SWIG)
+if (SWIG_FOUND)
+ include (${SWIG_USE_FILE})
+endif ()
+
+find_package (Threads REQUIRED)
+find_package (PkgConfig REQUIRED)
+
+# force a libmraa search and minimum required version every time a config is generated
+unset(MRAA_FOUND CACHE)
+pkg_check_modules (MRAA REQUIRED mraa>=0.8.0)
+message (INFO " found mraa version: ${MRAA_VERSION}")
+
+# Appends the cmake/modules path to MAKE_MODULE_PATH variable.
+set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH})
+set (LIB_INSTALL_DIR "lib${LIB_SUFFIX}" CACHE PATH "Installation path for libraries")
+
+# Set CMAKE_LIB_INSTALL_DIR if not defined
+include(GNUInstallDirs)
+
+# 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 UPM!")
+ set (VERSION "v0.4.0-dirty")
+endif ()
+
+message (INFO " - UPM 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}")
+
+if ("${VERSION_COMMIT}" MATCHES "^v.*")
+ set (VERSION_COMMIT "")
+endif()
+
+set (upm_VERSION_MAJOR ${VERSION_MAJOR})
+set (upm_VERSION_MINOR ${VERSION_MINOR})
+set (upm_VERSION_PATCH ${VERSION_PATCH})
+set (upm_VERSION_STRING ${upm_VERSION_MAJOR}.${upm_VERSION_MINOR}.${upm_VERSION_PATCH})
+
+set (CMAKE_SWIG_FLAGS "")
+
+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 (BUILDEXAMPLES "Build C++ example binaries" OFF)
+option (BUILDSWIGJAVA "Build swig java modules" OFF)
+option (IPK "Generate IPK using CPack" OFF)
+option (RPM "Generate RPM using CPack" OFF)
+
+# detect arch
+include (TargetArch)
+target_architecture (DETECTED_ARCH)
+message( INFO " - Target arch is ${DETECTED_ARCH}")
+
+if (BUILDDOC)
+ # add a target to generate API documentation with Doxygen
+ find_package (Doxygen)
+ if (DOXYGEN_FOUND)
+ configure_file (${CMAKE_CURRENT_SOURCE_DIR}/doxy/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
+ if (BUILDSWIGJAVA)
+ configure_file (${CMAKE_CURRENT_SOURCE_DIR}/doxy/Doxyfile.java.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile-java @ONLY)
+ endif()
+ file(GLOB PNG_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/docs docs/icons/*.png)
+ foreach(PNG_FILE ${PNG_FILES})
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/docs/${PNG_FILE} ${CMAKE_CURRENT_BINARY_DIR}/html/docs/${PNG_FILE} COPYONLY)
+ endforeach()
+ add_custom_target (doc
+ ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
+ COMMAND tar -czf html/xml.tar.gz -C xml .
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMENT "Generating API documentation with Doxygen" VERBATIM
+ )
+ endif (DOXYGEN_FOUND)
+ # check if Sphinx is installed and add target to generate API documentation
+ find_package (Sphinx)
+ if(SPHINX_FOUND AND BUILDSWIG AND BUILDSWIGPYTHON)
+ # python required for Sphinx build
+ find_package (PythonLibs)
+ string (REPLACE "." ";" PYTHON_VERSION_LIST ${PYTHONLIBS_VERSION_STRING})
+ list (GET PYTHON_VERSION_LIST 0 PYTHON_VERSION_MAJOR)
+ list (GET PYTHON_VERSION_LIST 1 PYTHON_VERSION_MINOR)
+ set (SITE_PACKAGES ${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages)
+ configure_file (${CMAKE_CURRENT_SOURCE_DIR}/doxy/conf.py.in ${CMAKE_CURRENT_BINARY_DIR}/pydoc/conf.py @ONLY)
+ configure_file (${CMAKE_CURRENT_SOURCE_DIR}/doxy/index.rst ${CMAKE_CURRENT_BINARY_DIR}/pydoc/index.rst COPYONLY)
+ add_custom_target (pydoc ALL
+ COMMAND rm -r -f ${CMAKE_BINARY_DIR}/pyupm && mkdir -p ${CMAKE_BINARY_DIR}/pyupm
+ COMMAND find ${CMAKE_BINARY_DIR}/src -name "_pyupm_*.so" -exec cp {} ${CMAKE_BINARY_DIR}/pyupm \;
+ COMMAND find ${CMAKE_BINARY_DIR}/src -name "pyupm_*.py" -exec cp {} ${CMAKE_BINARY_DIR}/pyupm \;
+ COMMAND ${SPHINX_API_EXECUTABLE} -f -o pydoc ${CMAKE_BINARY_DIR}/pyupm
+ # todo: use a separate cmake FILE module for string replacement instead
+ COMMAND ${SPHINX_EXECUTABLE} -b html pydoc html/python
+ COMMAND sed -i.bak s|\">pyupm_|\">|g html/python/index.html html/python/modules.html
+ COMMAND sed -i.bak s|[[:space:]][mM]odule</a>|</a>|g html/python/index.html html/python/modules.html
+ DEPENDS doc
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMENT "Generating API documentation with Sphinx" VERBATIM
+ )
+ endif ()
+ # check if Yuidoc is installed and add target for API documentation
+ find_package(Yuidoc)
+ if(YUIDOC_FOUND AND BUILDSWIGNODE)
+ # node required for Yuidoc documentation
+ find_package(Node)
+ file(GLOB_RECURSE JSDOC_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/doxy/node doxy/node/*)
+ foreach(JSDOC_FILE ${JSDOC_FILES})
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doxy/node/${JSDOC_FILE} ${CMAKE_CURRENT_BINARY_DIR}/${JSDOC_FILE} COPYONLY)
+ endforeach()
+ add_custom_target(jsdoc ALL
+ COMMAND ${NODE_EXECUTABLE} docgen -m upm -i xml -t ${CMAKE_CURRENT_SOURCE_DIR}/src -g ../../
+ COMMAND ${YUIDOC_EXECUTABLE} -C --no-sort --helpers generators/yuidoc/helper.js --themedir generators/yuidoc/tmpl -o html/node jsdoc/yuidoc/upm
+ COMMAND ${NODE_EXECUTABLE} tolower -i html/node
+ DEPENDS doc
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMENT "Generating API documentation with Yuidoc" VERBATIM
+ )
+ endif()
+endif()
+
+if (IPK)
+
+ # Get target package arch from Yocto ADT sysroot if set or host OS, mapping to Ubuntu name if necessary
+ if (DEFINED ENV{OECORE_TARGET_SYSROOT})
+ GET_FILENAME_COMPONENT (DETECTED_SYSROOT $ENV{OECORE_TARGET_SYSROOT} NAME)
+ string (REGEX REPLACE "-poky-linux" "" TARGET_ARCH "${DETECTED_SYSROOT}")
+ else ()
+ # debian uses amd64 to denote x86_64
+ if (DETECTED_ARCH STREQUAL "x86_64")
+ set (TARGET_ARCH "amd64")
+ else ()
+ set (TARGET_ARCH ${DETECTED_ARCH})
+ endif ()
+ endif ()
+ message (INFO " - Package arch is ${TARGET_ARCH}")
+
+ set(CPACK_GENERATOR "DEB" "TGZ")
+ set(OPKG_ARCH ${TARGET_ARCH})
+ set(CPACK_BINARY_DIR ${CMAKE_BINARY_DIR})
+ set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Intel IoT-Devkit") #required
+ set(upm_PACKAGE_ON_TAG ".")
+ if ("${VERSION_COMMIT}" STREQUAL "")
+ set(upm_PACKAGE_ON_TAG "")
+ endif()
+ set(CPACK_PACKAGE_VERSION
+ "${upm_VERSION_MAJOR}.${upm_VERSION_MINOR}.${upm_VERSION_PATCH}${upm_PACKAGE_ON_TAG}${VERSION_COMMIT}")
+ set(CPACK_PACKAGE_NAME "upm")
+ set(CPACK_DEBIAN_PACKAGE_SECTION "libs")
+ set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${TARGET_ARCH})
+ set(CPACK_SYSTEM_NAME ${TARGET_ARCH})
+ set(CPACK_DEBIAN_PACKAGE_DEPENDS "mraa (>= ${MRAA_VERSION})")
+ set(CPACK_DEBIAN_PACKAGE_PROVIDES "upm-dev, upm-dbg, upm-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()
+
+if (RPM)
+ message (INFO " - RPM packaging enabled for ${DETECTED_ARCH}")
+ set(CPACK_PACKAGE_VERSION ${VERSION})
+ set(CPACK_GENERATOR "RPM")
+ set(CPACK_PACKAGE_NAME "libupm${upm_VERSION_MAJOR}")
+ set(CPACK_PACKAGE_RELEASE 1)
+ set(CPACK_PACKAGE_VERSION
+ "${upm_VERSION_MAJOR}.${upm_VERSION_MINOR}.${upm_VERSION_PATCH}-${upm_PACKAGE_ON_TAG}${VERSION_COMMIT}")
+ set(CPACK_PACKAGE_CONTACT "Intel IoT-Devkit")
+ set(CPACK_PACKAGE_VENDOR "Intel IoT-Devkit")
+ set(CPACK_RPM_PACKAGE_REQUIRES "mraa >= ${MRAA_VERSION}")
+ set(CPACK_RPM_PACKAGE_PROVIDES "${CPACK_PACKAGE_NAME}-devel")
+ EXECUTE_PROCESS(COMMAND rpm --showrc
+ COMMAND grep -E "dist[[:space:]]*\\."
+ COMMAND sed -e "s/^.*dist\\s*\\.//"
+ COMMAND tr \\n \\t
+ COMMAND sed -e s/\\t//
+ OUTPUT_VARIABLE DIST_TAG)
+ set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_PACKAGE_RELEASE}.${DIST_TAG}.${DETECTED_ARCH}")
+ include(CPack)
+endif()
+
+add_subdirectory (src)
+
+if(BUILDEXAMPLES)
+ add_subdirectory (examples/c++)
+endif()