diff options
Diffstat (limited to 'printer/CMakeLists.txt')
-rw-r--r-- | printer/CMakeLists.txt | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/printer/CMakeLists.txt b/printer/CMakeLists.txt new file mode 100644 index 0000000..4b7aac5 --- /dev/null +++ b/printer/CMakeLists.txt @@ -0,0 +1,120 @@ +project (mipi_syst_printer) +cmake_minimum_required (VERSION 2.8) +enable_testing() + +# External third party build dependencies: +# * PugiXML https://github.com/zeux/pugixml +# +if (NOT DEFINED PUGIXML_SRC_DIR) + get_filename_component(PUGIXML "${CMAKE_CURRENT_LIST_DIR}/../external/pugixml/src" ABSOLUTE) + set(PUGIXML_SRC_DIR "${PUGIXML}" CACHE PATH "Location of pugixml XML parser code") +endif() +if (NOT EXISTS "${PUGIXML_SRC_DIR}/pugixml.cpp") + message(FATAL_ERROR + "PUGIXML_SRC_DIR=${PUGIXML_SRC_DIR} does not point to pugixml sources. Try running\n" + "git submodule update --init --recursive\n" + "to populate the external folder git submodules or change PUGIXML_SRC_DIR to point to pugixml sources." + ) +endif() + +if (WIN32) + add_definitions(-D_CRT_SECURE_NO_WARNINGS) +endif() + +set (printer_Includes + include/mipi_syst_collateral.h + include/mipi_syst_printer.h + include/mipi_syst_decode.h + include/mipi_syst_message.h + include/mipi_syst_guid.h + include/mipi_syst_printf.h + + ${PUGIXML_SRC_DIR}/pugixml.hpp +) + +set (printer_Sources + src/mipi_syst_main.cpp + src/mipi_syst_collateral.cpp + src/mipi_syst_printf.cpp + src/mipi_syst_decode.cpp + src/mipi_syst_message.cpp + ${PUGIXML_SRC_DIR}/pugixml.cpp +) + +include_directories( + include + ${PUGIXML_SRC_DIR} +) + +add_executable(systprint + ${printer_Includes} + ${printer_Sources} +) + +# Request C++11 support +# +if (CMAKE_VERSION VERSION_LESS "3.1") + if (CMAKE_CXX_COMPILER_ID STREQUAL "CLANG") + set (CMAKE_CXX_FLAGS "-std=c++11" ${CMAKE_CXX_FLAGS}) + elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + message( STATUS ${CMAKE_CXX_COMPILER_ID}) + set (CMAKE_CXX_FLAGS "-std=gnu++11" ${CMAKE_CXX_FLAGS}) + endif() +else() + set_property(TARGET systprint PROPERTY CXX_STANDARD 11) +endif() + +install(TARGETS systprint + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib +) + +# Simple test that print an input file +add_test( + NAME print_client_example + COMMAND systprint --short_guid {494E5443-8A9C-4014-A65A-2F36A36D96E4} --collateral collateral.xml input_client64.txt + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/test +) + +# pass option as single "^" separated option to test script to avoid CMAKE string list modifications on blanks +# +set(TEST_OPTIONS --short_guid {494E5443-8A9C-4014-A65A-2F36A36D96E4} --collateral collateral.xml) +string(REPLACE ";" "^" TEST_OPTIONS "${TEST_OPTIONS}") + +# Compare output from 32bit client +# +add_test( + NAME diff_output_with_32bit_reference + COMMAND ${CMAKE_COMMAND} + -DEXECUTABLE=$<TARGET_FILE:systprint> + -DOPTIONS=${TEST_OPTIONS}^input_client32.txt + -DTEST_REFERENCE=output_client32.txt + -DTEST_OUTPUT=${CMAKE_CURRENT_BINARY_DIR}/output32.txt + -P ${CMAKE_CURRENT_SOURCE_DIR}/test/diff.cmake + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/test +) + +# Compare output from 64bit client +# +add_test( + NAME diff_output_with_64bit_reference + COMMAND ${CMAKE_COMMAND} + -DEXECUTABLE=$<TARGET_FILE:systprint> + -DOPTIONS=${TEST_OPTIONS}^input_client64.txt + -DTEST_REFERENCE=output_client64.txt + -DTEST_OUTPUT=${CMAKE_CURRENT_BINARY_DIR}/output64.txt + -P ${CMAKE_CURRENT_SOURCE_DIR}/test/diff.cmake + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/test +) +# Add verbose test target to show the output of the tools run by tests +# +if (CMAKE_CONFIGURATION_TYPES) + add_custom_target(RUN_TEST_VERBOSE COMMAND ${CMAKE_CTEST_COMMAND} + --force-new-ctest-process --verbose + --build-config "$<CONFIGURATION>") +else() + add_custom_target(RUN_TEST_VERBOSE COMMAND ${CMAKE_CTEST_COMMAND} + --force-new-ctest-process --verbose) +endif() + |