You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

125 lines
8.9 KiB

  1. #############################################################
  2. ##
  3. ## Source file aggregation and clustering
  4. ##
  5. #############################################################
  6. file(GLOB_RECURSE STORM_HEADERS ${PROJECT_SOURCE_DIR}/src/*.h)
  7. file(GLOB_RECURSE STORM_HEADERS_CLI ${PROJECT_SOURCE_DIR}/src/cli/*.h)
  8. file(GLOB_RECURSE STORM_SOURCES_WITHOUT_MAIN ${PROJECT_SOURCE_DIR}/src/*/*.cpp)
  9. file(GLOB_RECURSE STORM_SOURCES_CLI ${PROJECT_SOURCE_DIR}/src/cli/*.cpp)
  10. file(GLOB_RECURSE STORM_MAIN_FILE ${PROJECT_SOURCE_DIR}/src/storm.cpp)
  11. file(GLOB_RECURSE STORM_ADAPTERS_FILES ${PROJECT_SOURCE_DIR}/src/adapters/*.h ${PROJECT_SOURCE_DIR}/src/adapters/*.cpp)
  12. file(GLOB_RECURSE STORM_BUILDER_FILES ${PROJECT_SOURCE_DIR}/src/builder/*.h ${PROJECT_SOURCE_DIR}/src/builder/*.cpp)
  13. file(GLOB_RECURSE STORM_CLI_FILES ${PROJECT_SOURCE_DIR}/src/cli/*.h ${PROJECT_SOURCE_DIR}/src/cli/*.cpp)
  14. file(GLOB_RECURSE STORM_EXCEPTIONS_FILES ${PROJECT_SOURCE_DIR}/src/exceptions/*.h ${PROJECT_SOURCE_DIR}/src/exceptions/*.cpp)
  15. file(GLOB_RECURSE STORM_LOGIC_FILES ${PROJECT_SOURCE_DIR}/src/logic/*.h ${PROJECT_SOURCE_DIR}/src/logic/*.cpp)
  16. file(GLOB STORM_MODELCHECKER_FILES ${PROJECT_SOURCE_DIR}/src/modelchecker/*.h ${PROJECT_SOURCE_DIR}/src/modelchecker/*.cpp)
  17. file(GLOB STORM_MODELCHECKER_PRCTL_FILES ${PROJECT_SOURCE_DIR}/src/modelchecker/prctl/*.h ${PROJECT_SOURCE_DIR}/src/modelchecker/prctl/*.cpp)
  18. file(GLOB_RECURSE STORM_MODELCHECKER_PRCTL_HELPER_FILES ${PROJECT_SOURCE_DIR}/src/modelchecker/prctl/helper/*.h ${PROJECT_SOURCE_DIR}/src/modelchecker/prctl/helper/*.cpp)
  19. file(GLOB STORM_MODELCHECKER_CSL_FILES ${PROJECT_SOURCE_DIR}/src/modelchecker/csl/*.h ${PROJECT_SOURCE_DIR}/src/modelchecker/csl/*.cpp)
  20. file(GLOB_RECURSE STORM_MODELCHECKER_CSL_HELPER_FILES ${PROJECT_SOURCE_DIR}/src/modelchecker/csl/helper/*.h ${PROJECT_SOURCE_DIR}/src/modelchecker/csl/helper/*.cpp)
  21. file(GLOB_RECURSE STORM_MODELCHECKER_REACHABILITY_FILES ${PROJECT_SOURCE_DIR}/src/modelchecker/reachability/*.h ${PROJECT_SOURCE_DIR}/src/modelchecker/reachability/*.cpp)
  22. file(GLOB_RECURSE STORM_MODELCHECKER_PROPOSITIONAL_FILES ${PROJECT_SOURCE_DIR}/src/modelchecker/propositional/*.h ${PROJECT_SOURCE_DIR}/src/modelchecker/propositional/*.cpp)
  23. file(GLOB_RECURSE STORM_MODELCHECKER_RESULTS_FILES ${PROJECT_SOURCE_DIR}/src/modelchecker/results/*.h ${PROJECT_SOURCE_DIR}/src/modelchecker/results/*.cpp)
  24. file(GLOB_RECURSE STORM_COUNTEREXAMPLES_FILES ${PROJECT_SOURCE_DIR}/src/counterexamples/*.h ${PROJECT_SOURCE_DIR}/src/counterexamples/*.cpp)
  25. file(GLOB_RECURSE STORM_PERMISSIVESCHEDULER_FILES ${PROJECT_SOURCE_DIR}/src/permissivesched/*.h ${PROJECT_SOURCE_DIR}/src/permissivesched/*.cpp)
  26. file(GLOB STORM_MODELS_FILES ${PROJECT_SOURCE_DIR}/src/models/*.h ${PROJECT_SOURCE_DIR}/src/models/*.cpp)
  27. file(GLOB_RECURSE STORM_MODELS_SPARSE_FILES ${PROJECT_SOURCE_DIR}/src/models/sparse/*.h ${PROJECT_SOURCE_DIR}/src/models/sparse/*.cpp)
  28. file(GLOB_RECURSE STORM_MODELS_SYMBOLIC_FILES ${PROJECT_SOURCE_DIR}/src/models/symbolic/*.h ${PROJECT_SOURCE_DIR}/src/models/symbolic/*.cpp)
  29. file(GLOB STORM_PARSER_FILES ${PROJECT_SOURCE_DIR}/src/parser/*.h ${PROJECT_SOURCE_DIR}/src/parser/*.cpp)
  30. file(GLOB_RECURSE STORM_PARSER_PRISMPARSER_FILES ${PROJECT_SOURCE_DIR}/src/parser/prismparser/*.h ${PROJECT_SOURCE_DIR}/src/parser/prismparser/*.cpp)
  31. file(GLOB STORM_SETTINGS_FILES ${PROJECT_SOURCE_DIR}/src/settings/*.h ${PROJECT_SOURCE_DIR}/src/settings/*.cpp)
  32. file(GLOB STORM_SETTINGS_MODULES_FILES ${PROJECT_SOURCE_DIR}/src/settings/modules/*.h ${PROJECT_SOURCE_DIR}/src/settings/modules/*.cpp)
  33. file(GLOB_RECURSE STORM_SOLVER_FILES ${PROJECT_SOURCE_DIR}/src/solver/*.h ${PROJECT_SOURCE_DIR}/src/solver/*.cpp)
  34. file(GLOB STORM_STORAGE_FILES ${PROJECT_SOURCE_DIR}/src/storage/*.h ${PROJECT_SOURCE_DIR}/src/storage/*.cpp)
  35. file(GLOB STORM_STORAGE_BISIMULATION_FILES ${PROJECT_SOURCE_DIR}/src/storage/bisimulation/*.h ${PROJECT_SOURCE_DIR}/src/storage/bisimulation/*.cpp)
  36. file(GLOB STORM_STORAGE_DD_FILES ${PROJECT_SOURCE_DIR}/src/storage/dd/*.h ${PROJECT_SOURCE_DIR}/src/storage/dd/*.cpp)
  37. file(GLOB_RECURSE STORM_STORAGE_DD_CUDD_FILES ${PROJECT_SOURCE_DIR}/src/storage/dd/cudd/*.h ${PROJECT_SOURCE_DIR}/src/storage/dd/cudd/*.cpp)
  38. file(GLOB_RECURSE STORM_STORAGE_DD_SYLVAN_FILES ${PROJECT_SOURCE_DIR}/src/storage/dd/sylvan/*.h ${PROJECT_SOURCE_DIR}/src/storage/dd/sylvan/*.cpp)
  39. file(GLOB_RECURSE STORM_STORAGE_EXPRESSIONS_FILES ${PROJECT_SOURCE_DIR}/src/storage/expressions/*.h ${PROJECT_SOURCE_DIR}/src/storage/expressions/*.cpp)
  40. file(GLOB_RECURSE STORM_STORAGE_PRISM_FILES ${PROJECT_SOURCE_DIR}/src/storage/prism/*.h ${PROJECT_SOURCE_DIR}/src/storage/prism/*.cpp)
  41. file(GLOB_RECURSE STORM_STORAGE_SPARSE_FILES ${PROJECT_SOURCE_DIR}/src/storage/sparse/*.h ${PROJECT_SOURCE_DIR}/src/storage/sparse/*.cpp)
  42. file(GLOB_RECURSE STORM_UTILITY_FILES ${PROJECT_SOURCE_DIR}/src/utility/*.h ${PROJECT_SOURCE_DIR}/src/utility/*.cpp)
  43. # Additional include files like the storm-config.h
  44. file(GLOB_RECURSE STORM_BUILD_HEADERS ${PROJECT_BINARY_DIR}/include/*.h)
  45. set(STORM_LIB_SOURCES ${STORM_SOURCES_WITHOUT_MAIN})
  46. list(REMOVE_ITEM STORM_LIB_SOURCES ${STORM_SOURCES_CLI})
  47. set(STORM_LIB_HEADERS ${STORM_HEADERS})
  48. list(REMOVE_ITEM STORM_LIB_HEADERS ${STORM_HEADERS_CLI})
  49. set(STORM_MAIN_SOURCES ${STORM_SOURCES_CLI} ${STORM_MAIN_FILE})
  50. set(STORM_MAIN_HEADERS ${STORM_HEADERS_CLI})
  51. # Group the headers and sources
  52. source_group(main FILES ${STORM_MAIN_FILE})
  53. source_group(adapters FILES ${STORM_ADAPTERS_FILES})
  54. source_group(builder FILES ${STORM_BUILDER_FILES})
  55. source_group(cli FILES ${STORM_CLI_FILES})
  56. source_group(exceptions FILES ${STORM_EXCEPTIONS_FILES})
  57. source_group(logic FILES ${STORM_LOGIC_FILES})
  58. source_group(generated FILES ${STORM_BUILD_HEADERS} ${STORM_BUILD_SOURCES})
  59. source_group(modelchecker FILES ${STORM_MODELCHECKER_FILES})
  60. source_group(modelchecker\\prctl FILES ${STORM_MODELCHECKER_PRCTL_FILES})
  61. source_group(modelchecker\\prctl\\helper FILES ${STORM_MODELCHECKER_PRCTL_HELPER_FILES})
  62. source_group(modelchecker\\csl FILES ${STORM_MODELCHECKER_CSL_FILES})
  63. source_group(modelchecker\\csl\\helper FILES ${STORM_MODELCHECKER_CSL_HELPER_FILES})
  64. source_group(modelchecker\\reachability FILES ${STORM_MODELCHECKER_REACHABILITY_FILES})
  65. source_group(modelchecker\\propositional FILES ${STORM_MODELCHECKER_PROPOSITIONAL_FILES})
  66. source_group(modelchecker\\results FILES ${STORM_MODELCHECKER_RESULTS_FILES})
  67. source_group(counterexamples FILES ${STORM_COUNTEREXAMPLES_FILES})
  68. source_group(permissiveschedulers FILES ${STORM_PERMISSIVESCHEDULER_FILES})
  69. source_group(models FILES ${STORM_MODELS_FILES})
  70. source_group(models\\sparse FILES ${STORM_MODELS_SPARSE_FILES})
  71. source_group(models\\symbolic FILES ${STORM_MODELS_SYMBOLIC_FILES})
  72. source_group(parser FILES ${STORM_PARSER_FILES})
  73. source_group(parser\\prismparser FILES ${STORM_PARSER_PRISMPARSER_FILES})
  74. source_group(settings FILES ${STORM_SETTINGS_FILES})
  75. source_group(settings\\modules FILES ${STORM_SETTINGS_MODULES_FILES})
  76. source_group(solver FILES ${STORM_SOLVER_FILES})
  77. source_group(storage FILES ${STORM_STORAGE_FILES})
  78. source_group(storage\\bisimulation FILES ${STORM_STORAGE_BISIMULATION_FILES})
  79. source_group(storage\\dd FILES ${STORM_STORAGE_DD_FILES})
  80. source_group(storage\\dd\\cudd FILES ${STORM_STORAGE_DD_CUDD_FILES})
  81. source_group(storage\\dd\\sylvan FILES ${STORM_STORAGE_DD_SYLVAN_FILES})
  82. source_group(storage\\expressions FILES ${STORM_STORAGE_EXPRESSIONS_FILES})
  83. source_group(storage\\prism FILES ${STORM_STORAGE_PRISM_FILES})
  84. source_group(storage\\sparse FILES ${STORM_STORAGE_SPARSE_FILES})
  85. source_group(utility FILES ${STORM_UTILITY_FILES})
  86. # Add custom additional include or link directories
  87. if (ADDITIONAL_INCLUDE_DIRS)
  88. message(STATUS "StoRM - Using additional include directories ${ADDITIONAL_INCLUDE_DIRS}")
  89. include_directories(${ADDITIONAL_INCLUDE_DIRS})
  90. endif(ADDITIONAL_INCLUDE_DIRS)
  91. if (ADDITIONAL_LINK_DIRS)
  92. message(STATUS "StoRM - Using additional link directories ${ADDITIONAL_LINK_DIRS}")
  93. link_directories(${ADDITIONAL_LINK_DIRS})
  94. endif(ADDITIONAL_LINK_DIRS)
  95. ###############################################################################
  96. ## #
  97. ## Executable Creation #
  98. ## #
  99. ## All link_directories() calls MUST be made before this point #
  100. ## #
  101. ###############################################################################
  102. add_library(storm ${STORM_LIB_SOURCES} ${STORM_LIB_HEADERS} ${STORM_GENERATED_SOURCES}) # Adding headers for xcode
  103. add_dependencies(storm xercesc)
  104. add_dependencies(storm sylvan)
  105. add_executable(storm-main ${STORM_MAIN_SOURCES} ${STORM_MAIN_HEADERS})
  106. target_link_libraries(storm-main storm) # Adding headers for xcode
  107. set_target_properties(storm-main PROPERTIES OUTPUT_NAME "storm")
  108. target_link_libraries(storm ${STORM_LINK_LIBRARIES})
  109. INSTALL(TARGETS storm-main
  110. RUNTIME DESTINATION bin
  111. LIBRARY DESTINATION lib
  112. ARCHIVE DESTINATION lib
  113. )