CMakeLists.txt 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #######################################
  2. # Required CMake version #
  3. #######################################
  4. cmake_minimum_required( VERSION 3.3 )
  5. #######################################
  6. # Project name #
  7. #######################################
  8. project( OpENer LANGUAGES C VERSION 2.3 )
  9. #######################################
  10. # Project version #
  11. #######################################
  12. if( NOT DEFINED OpENer_Device_Config_Vendor_Id )
  13. set( OpENer_Device_Config_Vendor_Id 1 CACHE STRING "Device Vendor ID" )
  14. endif()
  15. if( NOT DEFINED OpENer_Device_Config_Device_Type )
  16. set( OpENer_Device_Config_Device_Type 12 CACHE STRING "Device Type ID" )
  17. endif()
  18. if( NOT DEFINED OpENer_Device_Config_Product_Code )
  19. set( OpENer_Device_Config_Product_Code 65001 CACHE STRING "Device Product Code" )
  20. endif()
  21. if( NOT DEFINED OpENer_Device_Config_Device_Name )
  22. set( OpENer_Device_Config_Device_Name "OpENer PC" CACHE STRING "Device Name" )
  23. endif()
  24. configure_file(
  25. "${PROJECT_SOURCE_DIR}/src/ports/devicedata.h.in"
  26. "${PROJECT_BINARY_DIR}/src/ports/devicedata.h"
  27. )
  28. find_path( OpENer_BUILDSUPPORT_DIR OpENer.cmake ${PROJECT_SOURCE_DIR}/buildsupport )
  29. INCLUDE( ${OpENer_BUILDSUPPORT_DIR}/OpENer.cmake )
  30. option(OPENER_PRODUCED_DATA_HAS_RUN_IDLE_HEADER "Shall produced data from OpENer also include a run idle header?" FALSE)
  31. option(OPENER_CONSUMED_DATA_HAS_RUN_IDLE_HEADER "Will consumed data from OpENer also include a run idle header?" TRUE)
  32. if(OPENER_PRODUCED_DATA_HAS_RUN_IDLE_HEADER)
  33. add_definitions(-DOPENER_PRODUCED_DATA_HAS_RUN_IDLE_HEADER)
  34. endif()
  35. if(OPENER_CONSUMED_DATA_HAS_RUN_IDLE_HEADER)
  36. add_definitions(-DOPENER_CONSUMED_DATA_HAS_RUN_IDLE_HEADER)
  37. endif()
  38. #######################################
  39. # Platform switches #
  40. #######################################
  41. set( OpENer_KNOWN_PLATFORMS "POSIX" "WIN32" "MINGW")
  42. set( OpENer_PLATFORM CACHE STRINGS "Platform OpENer will be built for" )
  43. set_property(CACHE OpENer_PLATFORM PROPERTY STRINGS ${OpENer_KNOWN_PLATFORMS} )
  44. #######################################
  45. # Platform-dependent functions check #
  46. #######################################
  47. INCLUDE( ${OpENer_BUILDSUPPORT_DIR}/OpENer_function_checks.cmake )
  48. #######################################
  49. # OpENer 64-bit data types #
  50. #######################################
  51. set( OpENer_64_BIT_DATA_TYPES_ENABLED CACHE BOOL "Enable 64-bit data type support" )
  52. if( OpENer_64_BIT_DATA_TYPES_ENABLED )
  53. add_definitions( -DOPENER_SUPPORT_64BIT_DATATYPES )
  54. endif( OpENer_64_BIT_DATA_TYPES_ENABLED )
  55. #######################################
  56. # OpENer tracer switches #
  57. #######################################
  58. set( OpENer_TRACES OFF CACHE BOOL "Activate OpENer traces" )
  59. if(OpENer_TRACES)
  60. createTraceLevelOptions()
  61. endif(OpENer_TRACES)
  62. #######################################
  63. # Test switch #
  64. #######################################
  65. set( OpENer_TESTS OFF CACHE BOOL "Enable tests to be built" )
  66. if( OpENer_TESTS )
  67. enable_testing()
  68. enable_language( CXX )
  69. set( CPPUTEST_HOME "" CACHE PATH "Path to CppUTest directory" )
  70. INCLUDE( ${OpENer_BUILDSUPPORT_DIR}/OpENer_Tests.cmake )
  71. INCLUDE( ${OpENer_BUILDSUPPORT_DIR}/CodeCoverage.cmake )
  72. set(COVERAGE_LCOV_EXCLUDES 'tests/*' 'usr/*' 'ports/POSIX/sample_application/*')
  73. SETUP_TARGET_FOR_COVERAGE_LCOV(NAME ${PROJECT_NAME}_coverage EXECUTABLE OpENer_Tests DEPENDENCIES OpENer_Tests)
  74. add_test_includes()
  75. add_subdirectory( tests )
  76. endif( OpENer_TESTS )
  77. #######################################
  78. # OpENer C flags #
  79. #######################################
  80. set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall" )
  81. ####################################################
  82. # Internal cache holding the available CIP objects #
  83. ####################################################
  84. set( OpENer_ADD_CIP_OBJECTS "" CACHE INTERNAL STRING )
  85. #######################################
  86. # Add custom CIP objects #
  87. #######################################
  88. set( OpENer_CIP_OBJECTS_DIR ${PROJECT_SOURCE_DIR}/src/cip_objects )
  89. include(${OpENer_BUILDSUPPORT_DIR}/OpENer_CIP_Object_generator.cmake)
  90. #######################################
  91. # Add subdirectories #
  92. #######################################
  93. add_subdirectory( src )