aboutsummaryrefslogtreecommitdiff
path: root/library/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'library/CMakeLists.txt')
-rw-r--r--library/CMakeLists.txt136
1 files changed, 136 insertions, 0 deletions
diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt
new file mode 100644
index 0000000..e641b3e
--- /dev/null
+++ b/library/CMakeLists.txt
@@ -0,0 +1,136 @@
+project (mipi_syst_library)
+cmake_minimum_required (VERSION 2.8)
+enable_testing()
+
+set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "")
+
+find_package(Doxygen)
+
+if (NOT DEFINED SYST_CFG_CONFORMANCE_LEVEL)
+ message(WARNING "SYST_CFG_CONFORMANCE_LEVEL not set, defaulting to leval 30 (complete implementation)")
+else()
+ message(STATUS "Building for SyS-T conformance level ${SYST_CFG_CONFORMANCE_LEVEL}.")
+endif()
+# SYS-T API version settings
+#
+set(SYST_CFG_VERSION_MAJOR "1" CACHE STRING "Supported MIPI SyS-T major specification version.")
+set(SYST_CFG_VERSION_MINOR "0" CACHE STRING "Supported MIPI SyS-T minor specification version.")
+set(SYST_CFG_CONFORMANCE_LEVEL "30" CACHE STRING "Supported MIPI SyS-T API conformance level. (10=min, 20=low overhead, 30=complete)")
+
+# SYS-T Implementation patch level
+#
+set(SYST_CFG_VERSION_PATCH "0" CACHE PATH "SyS-T Library patch level.")
+
+
+
+# External build dependencies:
+# * Google Test https://github.com/google/googletest (for unit tests)
+#
+if (NOT DEFINED SYST_BUILD_GTEST_DIR)
+ get_filename_component(GTEST_DIR "${CMAKE_CURRENT_LIST_DIR}/../external/googletest/googletest" ABSOLUTE)
+endif()
+set(SYST_BUILD_GTEST_DIR "${GTEST_DIR}" CACHE PATH "Location of Google Test sources, which are needed for unit tests")
+if (NOT EXISTS "${SYST_BUILD_GTEST_DIR}/include/gtest/gtest.h")
+ message(WARNING
+ "SYST_BUILD_GTEST_DIR=${SYST_BUILD_GTEST_DIR} does not point to a Google Test source location. Unittests will not be build. Try running \n"
+ "git submodule update --init --recursive\n"
+ "to populate the external folder git submodules or change SYST_BUILD_GTEST_DIR to point to Google Test sources.")
+ set(BUILD_TEST "OFF")
+else()
+ set(BUILD_TEST "ON")
+endif()
+
+option(SYST_BUILD_DOC "Create documentation (requires Doxygen)" ${DOXYGEN_FOUND})
+option(SYST_BUILD_TEST "Build unit test (requires GoogleTest)" ${BUILD_TEST})
+option(SYST_BUILD_HW_CRC "Use CPU crc32 instruction support if supported by architecture." ON)
+
+if (NOT DEFINED SYST_BUILD_PLATFORM_NAME)
+ set (SYST_BUILD_PLATFORM_NAME "example" CACHE STRING "Directory name of platform specific source code")
+ message(WARNING "SYST_BUILD_PLATFORM_NAME directory name variable is not set, using 'example' as default.")
+endif()
+
+
+# HW CRC support enabling
+#
+if (SYST_BUILD_HW_CRC)
+ if (CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86|x86_64.*|i?86.*|AMD64.*")
+ add_definitions(-D MIPI_SYST_CRC_INTRINSIC_ON)
+ message(STATUS "Enabling x86 crc32 CPU instruction support (SSE 4.2). Unset SYST_BUILD_HW_CRC to disable." )
+ if (NOT WIN32)
+ add_definitions(-msse4.2)
+ endif()
+ endif()
+endif()
+
+configure_file(include/mipi_syst.h.in ${CMAKE_CURRENT_BINARY_DIR}/include/mipi_syst.h)
+
+set (mipi_syst_Includes
+ include/mipi_syst.h.in
+ include/mipi_syst/api.h
+ include/mipi_syst/compiler.h
+ include/mipi_syst/crc32.h
+ include/mipi_syst/message.h
+ include/mipi_syst/inline.h
+)
+
+set (mipi_syst_Sources
+ src/mipi_syst_api.c
+ src/mipi_syst_compiler.c
+ src/mipi_syst_crc32.c
+ src/mipi_syst_init.c
+ src/mipi_syst_inline.c
+ src/mipi_syst_writer.c
+)
+
+set (mipi_syst_Platform_inc platform/${SYST_BUILD_PLATFORM_NAME}/include)
+set (mipi_syst_Platform_src platform/${SYST_BUILD_PLATFORM_NAME}/src/mipi_syst_platform.c)
+
+file(GLOB mipi_syst_Platform_includes "${mipi_syst_Platform_inc}/*.h")
+
+include_directories(
+ ${mipi_syst_Platform_inc}
+ ${CMAKE_CURRENT_BINARY_DIR}/include
+ include
+)
+
+add_library(mipi_syst
+ SHARED
+ ${mipi_syst_Platform_includes}
+ ${mipi_syst_Includes}
+ ${mipi_syst_Sources}
+ ${mipi_syst_Platform_src}
+)
+
+add_library(mipi_syst_static
+ STATIC
+ ${mipi_syst_Platform_includes}
+ ${mipi_syst_Includes}
+ ${mipi_syst_Sources}
+ ${mipi_syst_Platform_src}
+)
+
+set_target_properties(mipi_syst PROPERTIES
+ VERSION ${SYST_CFG_VERSION_MAJOR}.${SYST_CFG_VERSION_MINOR}.${SYST_CFG_VERSION_PATCH}
+ COMPILE_FLAGS "-DMIPI_SYST_EXPORTS"
+ FOLDER "Instrumentation Library"
+)
+
+set_target_properties(mipi_syst_static PROPERTIES
+ VERSION ${SYST_CFG_VERSION_MAJOR}.${SYST_CFG_VERSION_MINOR}.${SYST_CFG_VERSION_PATCH}
+ COMPILE_FLAGS "-DMIPI_SYST_STATIC"
+ FOLDER "Instrumentation Library"
+)
+
+install(TARGETS mipi_syst mipi_syst_static
+ RUNTIME DESTINATION bin
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib
+)
+
+install(DIRECTORY include/mipi_syst DESTINATION include)
+install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/ DESTINATION include)
+install(DIRECTORY ${mipi_syst_Platform_inc}/ DESTINATION include)
+
+add_subdirectory(doxygen)
+add_subdirectory(test)