123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- cmake_minimum_required(VERSION 3.1)
- include(ExternalProject)
- project(DoRayMe)
- set(CMAKE_CXX_STANDARD 11)
- option(COVERALLS "Generate coveralls data" OFF)
- set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/external/coveralls-cmake/cmake)
- option(PACKAGE_TESTS "Build the tests" ON)
- option(ENABLE_COVERAGE "Build for code coverage" OFF)
- option(SHOW_STATS "Show rendering stat" ON)
- if (SHOW_STATS)
- add_compile_options(-DRENDER_STATS)
- endif()
- option(USE_LUA "Enable the use of Lua" ON)
- if (USE_LUA)
- add_compile_options(-DENABLE_LUA_SUPPORT)
- endif()
- if (ENABLE_COVERAGE AND COVERALLS)
- message(FATAL_ERROR "You can't enable both ENABLE_COVERAGE and COVERALLS at the same time")
- endif()
- if (COVERALLS)
- include(Coveralls)
- coveralls_turn_on_coverage()
- endif()
- if (ENABLE_COVERAGE)
- if("${CMAKE_C_COMPILER_ID}" MATCHES "(Apple)?[Cc]lang" OR
- "${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?[Cc]lang")
- message("Building with LLVM Code Coverage Tools")
- set(CMAKE_CXX_FLAGS "-fprofile-instr-generate -fcoverage-mapping")
- elseif(CMAKE_COMPILER_IS_GNUCXX)
- message("Building with lcov Code Coverage Tools")
- set(CMAKE_CXX_FLAGS "--coverage")
- else()
- message(FATAL_ERROR "Compiler ${CMAKE_C_COMPILER_ID} is not supported for code coverage")
- endif()
- endif()
- # LodePNG don't make a .a or .so, so let's build a library here
- add_library(LodePNG STATIC)
- set(LODEPNG_INCLUDE_FOLDER ${CMAKE_CURRENT_SOURCE_DIR}/external/lodepng)
- target_sources(LodePNG PRIVATE external/lodepng/lodepng.cpp external/lodepng/lodepng.h)
- if (USE_LUA)
- if (CMAKE_HOST_SYSTEM_NAME STREQUAL Linux)
- set(LUA_MAKE_TARGET linux)
- elseif (CMAKE_HOST_SYSTEM_NAME STREQUAL Darwin)
- set(LUA_MAKE_TARGET macosx)
- elseif (CMAKE_HOST_SYSTEM_NAME STREQUAL Windows)
- set(LUA_MAKE_TARGET posix)
- else()
- set(LUA_MAKE_TARGET posix)
- endif()
- message("-- Lua: Building Lua for ${LUA_MAKE_TARGET}")
- ExternalProject_Add(LuaCore
- URL "https://www.lua.org/ftp/lua-5.3.5.tar.gz"
- URL_HASH SHA1=112eb10ff04d1b4c9898e121d6bdf54a81482447
- SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/lua
- CONFIGURE_COMMAND ""
- BUILD_IN_SOURCE True
- BUILD_COMMAND make ${LUA_MAKE_TARGET}
- INSTALL_COMMAND ""
- )
- set(LUA_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/external/lua/src")
- set(LUA_LIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/external/lua/src/liblua.a" -ldl)
- endif()
- # NanoJPEG
- file(DOWNLOAD
- http://svn.emphy.de/nanojpeg/trunk/nanojpeg/nanojpeg.c
- ${CMAKE_CURRENT_SOURCE_DIR}/external/nanojpeg/nanojpeg.c
- EXPECTED_HASH MD5=03ce304a71ae0ad1c43663fb386cc233
- )
- add_library(NanoJPEG STATIC)
- set(NANOJPEG_INCLUDE_FOLDER ${CMAKE_CURRENT_SOURCE_DIR}/external/nanojpeg)
- target_sources(NanoJPEG PRIVATE external/nanojpeg/nanojpeg.c)
- # Main app
- add_subdirectory(source)
- if(PACKAGE_TESTS OR COVERALLS)
- enable_testing()
- include(GoogleTest)
- add_subdirectory("${PROJECT_SOURCE_DIR}/external/googletest" "external/googletest")
- add_subdirectory(tests)
- endif()
- if (COVERALLS)
- # Create the coveralls target.
- coveralls_setup(
- "${COVERAGE_SRCS}" # The source files.
- ON # If we should upload.
- ) # (Optional) Alternate project cmake module path.
- endif()
|