Open Source Tomb Raider Engine
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

CMakeLists.txt 5.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. cmake_minimum_required (VERSION 2.8)
  2. project (OpenRaider)
  3. # Version Number
  4. set (OpenRaider_VERSION_MAJOR 0)
  5. set (OpenRaider_VERSION_MINOR 1)
  6. set (OpenRaider_VERSION_MICRO 2)
  7. set (OpenRaider_VERSION_RELEASE -git)
  8. # Build Host
  9. set (OpenRaider_BUILD_HOST ${CMAKE_HOST_SYSTEM})
  10. #################################################################
  11. # Set a default build type if none was specified
  12. if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
  13. message(STATUS "Setting build type to 'Debug' as none was specified.")
  14. set(CMAKE_BUILD_TYPE Debug)
  15. endif()
  16. #################################################################
  17. # Include directories
  18. include_directories ("${PROJECT_SOURCE_DIR}/include")
  19. include_directories ("${PROJECT_BINARY_DIR}")
  20. # Include External Modules
  21. set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
  22. #################################################################
  23. # Build warnings
  24. set (WARNINGS "${WARNINGS} -Weverything -Wno-padded -Wno-packed")
  25. set (WARNINGS "${WARNINGS} -Wno-global-constructors -Wno-exit-time-destructors")
  26. set (WARNINGS "${WARNINGS} -Wno-documentation-unknown-command -Wno-c++98-compat-pedantic")
  27. set (WARNINGS "${WARNINGS} -Wno-missing-prototypes -Wno-missing-variable-declarations")
  28. set (WARNINGS "${WARNINGS} -Wno-disabled-macro-expansion")
  29. set (WARNINGS "${WARNINGS} -Wno-shorten-64-to-32 -Wno-sign-conversion")
  30. # Flags for all builds
  31. set (OpenRaider_CXX_FLAGS "${OpenRaider_CXX_FLAGS} -std=c++11 ${WARNINGS}")
  32. set (OpenRaider_CXX_FLAGS "${OpenRaider_CXX_FLAGS} -DUSING_EMITTER")
  33. # Flags for Debug build
  34. set (OpenRaider_CXX_FLAGS_DEBUG "${OpenRaider_CXX_FLAGS_DEBUG} -g -O0")
  35. set (OpenRaider_CXX_FLAGS_DEBUG "${OpenRaider_CXX_FLAGS_DEBUG} -DDEBUG")
  36. set (OpenRaider_CXX_FLAGS_DEBUG "${OpenRaider_CXX_FLAGS_DEBUG} -DEXPERIMENTAL")
  37. # Flags for Releasae builds
  38. set (OpenRaider_CXX_FLAGS_RELEASE "${OpenRaider_CXX_FLAGS_RELEASE} -DNDEBUG -O2")
  39. set (OpenRaider_CXX_FLAGS_RELEASE "${OpenRaider_CXX_FLAGS_RELEASE} -ffast-math -funroll-loops")
  40. set (OpenRaider_CXX_FLAGS_RELEASE "${OpenRaider_CXX_FLAGS_RELEASE} -fomit-frame-pointer")
  41. #################################################################
  42. # Add subdirectories
  43. add_subdirectory (src)
  44. #################################################################
  45. # Target for running the setup
  46. add_custom_target (setup "${PROJECT_SOURCE_DIR}/cmake/setup.sh"
  47. WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
  48. )
  49. #################################################################
  50. # Target for running cppcheck
  51. set (CHECK_STD "--std=c++11" "--std=posix")
  52. set (CHECK_FLAGS "--quiet" "--force")
  53. set (CHECK_NORMAL "--enable=information,warning,performance,portability")
  54. set (CHECK_FULL "--enable=all")
  55. set (CHECK_CONFIG "--check-config")
  56. add_custom_target (check echo "Running cppcheck..."
  57. COMMAND cppcheck ${CHECK_FLAGS} "-I${PROJECT_SOURCE_DIR}/include" ${CHECK_STD} ${CHECK_NORMAL} ${PROJECT_SOURCE_DIR}
  58. )
  59. add_custom_target (checkFull echo "Running full cppcheck..."
  60. COMMAND cppcheck ${CHECK_FLAGS} "-I${PROJECT_SOURCE_DIR}/include" ${CHECK_STD} ${CHECK_FULL} ${PROJECT_SOURCE_DIR}
  61. )
  62. add_custom_target (checkConfig echo "Checking cppcheck config..."
  63. COMMAND cppcheck ${CHECK_FLAGS} "-I${PROJECT_SOURCE_DIR}/include" ${CHECK_CONFIG} ${PROJECT_SOURCE_DIR}
  64. )
  65. #################################################################
  66. # Generate Doxygen Documentation
  67. find_package (Doxygen)
  68. if (DOXYGEN_FOUND)
  69. # Configure the Template Doxyfile for our specific project
  70. configure_file (cmake/Doxyfile.in
  71. ${PROJECT_BINARY_DIR}/Doxyfile @ONLY IMMEDIATE)
  72. # Add a custom target to run Doxygen when ever the project is built
  73. add_custom_target (doc
  74. COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/Doxyfile
  75. SOURCES ${PROJECT_BINARY_DIR}/Doxyfile)
  76. # Add custom target to create local documentation without graphs
  77. add_custom_target (docLocal
  78. COMMAND sed -i '' "s/HAVE_DOT = YES/HAVE_DOT = NO/g" Doxyfile
  79. COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/Doxyfile
  80. COMMAND cp -R doc/html/* ${PROJECT_SOURCE_DIR}/../apache/
  81. COMMAND sed -i '' "s/HAVE_DOT = NO/HAVE_DOT = YES/g" Doxyfile
  82. SOURCES ${PROJECT_BINARY_DIR}/Doxyfile)
  83. # Add custom target to create local documentation with call and caller graphs
  84. add_custom_target (docLocalFull
  85. COMMAND sed -i '' "s/CALL_GRAPH = NO/CALL_GRAPH = YES/g" Doxyfile
  86. COMMAND sed -i '' "s/CALLER_GRAPH = NO/CALLER_GRAPH = YES/g" Doxyfile
  87. COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/Doxyfile
  88. COMMAND cp -R doc/html/* ${PROJECT_SOURCE_DIR}/../apache/
  89. COMMAND sed -i '' "s/CALL_GRAPH = YES/CALL_GRAPH = NO/g" Doxyfile
  90. COMMAND sed -i '' "s/CALLER_GRAPH = YES/CALLER_GRAPH = NO/g" Doxyfile
  91. SOURCES ${PROJECT_BINARY_DIR}/Doxyfile)
  92. endif (DOXYGEN_FOUND)
  93. # Clean doc files
  94. set_directory_properties (PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "doc")