CMakeLists.txt 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. cmake_minimum_required(VERSION 3.1)
  2. include(ExternalProject)
  3. project(DoRayMe)
  4. set(CMAKE_CXX_STANDARD 11)
  5. option(COVERALLS "Generate coveralls data" OFF)
  6. set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/external/coveralls-cmake/cmake)
  7. option(PACKAGE_TESTS "Build the tests" ON)
  8. option(ENABLE_COVERAGE "Build for code coverage" OFF)
  9. option(SHOW_STATS "Show rendering stat" ON)
  10. if (SHOW_STATS)
  11. add_compile_options(-DRENDER_STATS)
  12. endif()
  13. if (ENABLE_COVERAGE AND COVERALLS)
  14. message(FATAL_ERROR "You can't enable both ENABLE_COVERAGE and COVERALLS at the same time")
  15. endif()
  16. if (COVERALLS)
  17. include(Coveralls)
  18. coveralls_turn_on_coverage()
  19. endif()
  20. if (ENABLE_COVERAGE)
  21. if("${CMAKE_C_COMPILER_ID}" MATCHES "(Apple)?[Cc]lang" OR
  22. "${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?[Cc]lang")
  23. message("Building with LLVM Code Coverage Tools")
  24. set(CMAKE_CXX_FLAGS "-fprofile-instr-generate -fcoverage-mapping")
  25. elseif(CMAKE_COMPILER_IS_GNUCXX)
  26. message("Building with lcov Code Coverage Tools")
  27. set(CMAKE_CXX_FLAGS "--coverage")
  28. else()
  29. message(FATAL_ERROR "Compiler ${CMAKE_C_COMPILER_ID} is not supported for code coverage")
  30. endif()
  31. endif()
  32. # LodePNG don't make a .a or .so, so let's build a library here
  33. add_library(LodePNG STATIC)
  34. set(LODEPNG_INCLUDE_FOLDER ${CMAKE_CURRENT_SOURCE_DIR}/external/lodepng)
  35. target_sources(LodePNG PRIVATE external/lodepng/lodepng.cpp external/lodepng/lodepng.h)
  36. ExternalProject_Add(LuaCore
  37. URL "https://www.lua.org/ftp/lua-5.3.5.tar.gz"
  38. URL_HASH SHA1=112eb10ff04d1b4c9898e121d6bdf54a81482447
  39. SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/lua
  40. CONFIGURE_COMMAND ""
  41. BUILD_IN_SOURCE True
  42. BUILD_COMMAND make generic
  43. INSTALL_COMMAND ""
  44. )
  45. set(LUA_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/external/lua/src")
  46. set(LUA_LIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/external/lua/src/liblua.a")
  47. # Main app
  48. add_subdirectory(source)
  49. if(PACKAGE_TESTS OR COVERALLS)
  50. enable_testing()
  51. include(GoogleTest)
  52. add_subdirectory("${PROJECT_SOURCE_DIR}/external/googletest" "external/googletest")
  53. add_subdirectory(tests)
  54. endif()
  55. if (COVERALLS)
  56. # Create the coveralls target.
  57. coveralls_setup(
  58. "${COVERAGE_SRCS}" # The source files.
  59. ON # If we should upload.
  60. ) # (Optional) Alternate project cmake module path.
  61. endif()