cmake_minimum_required(VERSION 3.11) project (univerxel VERSION 0.0.1) option(PROFILING "Build with profiling" 0) option(FIXED_WINDOW "Lock window size: Force floating on i3" 0) set(SIMD_LEVEL "avx2" CACHE STRING "SIMD processor acceleration (avx2, avx512f, ...)") if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) endif() set(CMAKE_CXX_FLAGS "-Wall -Wextra") set(CMAKE_EXPORT_COMPILE_COMMANDS ON) find_program(CCACHE_FOUND ccache) if(CCACHE_FOUND) set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) endif(CCACHE_FOUND) add_definitions( -m${SIMD_LEVEL} -mfma ) add_subdirectory("include/glm") add_subdirectory("include/enet") set(LINKED_LIBS glfw pthread dl glm::glm_static enet) file(GLOB_RECURSE SOURCES "src/*/*.cpp") file(GLOB INCLUDE_SOURCES "include/imgui/*.cpp" "include/FastNoiseSIMD/*.cpp" "include/tracy/TracyClient.cpp" "include/meshoptimizer/*.cpp" "include/zstd/*/*.c" "include/gl3w/gl3w.c" ) set(INCLUDE_LIBS "include/imgui" "include/FastNoiseSIMD" "include/toml++" "include/robin_hood" "include/libguarded" "include/tracy" "include/meshoptimizer" "include/zstd" "include/gl3w" "include/enet/include" ) add_executable(univerxel "src/main.cpp" ${SOURCES} ${INCLUDE_SOURCES}) target_compile_features(univerxel PUBLIC cxx_std_17) target_link_libraries(univerxel ${LINKED_LIBS}) target_include_directories(univerxel PRIVATE ${INCLUDE_LIBS}) target_compile_definitions(univerxel PRIVATE FIXED_WINDOW=${FIXED_WINDOW} HN_USE_FILESYSTEM=1) if(PROFILING) add_compile_definitions(TRACY_ENABLE=1) endif(PROFILING) file(COPY resource/content DESTINATION ${CMAKE_BINARY_DIR}) # Docs add_custom_target(docs COMMAND doxygen ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile WORKING_DIRECTORY ${CMAKE_BINARY_DIR} COMMENT "Build doc." ) # Builtin models file(GLOB_RECURSE MCT_SOURCES "src/model_contouring.cpp" "src/*/*.cpp") add_executable(model_contouring EXCLUDE_FROM_ALL ${MCT_SOURCES} ${INCLUDE_SOURCES}) target_compile_features(model_contouring PUBLIC cxx_std_17) target_link_libraries(model_contouring ${LINKED_LIBS}) target_include_directories(model_contouring PRIVATE ${INCLUDE_LIBS}) add_custom_command(OUTPUT "${CMAKE_BINARY_DIR}/content/model.ivb" COMMAND "${CMAKE_BINARY_DIR}/model_contouring" DEPENDS model_contouring) add_custom_target(render_models DEPENDS "${CMAKE_BINARY_DIR}/content/model.ivb")