cmake_minimum_required(VERSION 3.0) project (univerxel VERSION 0.0.1) cmake_policy(SET CMP0072 NEW) find_package(OpenGL REQUIRED) option(PROFILING "Build with profiling" 0) option(FIXED_WINDOW "Lock window size: Force floating on i3" 0) 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) set(LINKED_LIBS ${OPENGL_LIBRARY} glfw GLEW pthread dl zstd ) add_definitions( -DTW_STATIC -DTW_NO_LIB_PRAGMA -DTW_NO_DIRECT3D -DGLEW_STATIC -D_CRT_SECURE_NO_WARNINGS -mavx2 #-mavx512f -mfma ) file(GLOB_RECURSE SOURCES "src/*/*.cpp") file(GLOB INCLUDE_SOURCES "include/imgui-1.76/*.cpp" "include/FastNoiseSIMD/*.cpp" "include/tracy/TracyClient.cpp" "include/meshoptimizer/*.cpp") set(INCLUDE_LIBS "include/imgui-1.76" "include/FastNoiseSIMD" "include/toml++" "include/robin_hood" "include/libguarded" "include/tracy" "include/meshoptimizer" ) 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}) if(PROFILING) target_compile_definitions(univerxel PRIVATE TRACY_ENABLE=1 FIXED_WINDOW=${FIXED_WINDOW} HN_USE_FILESYSTEM=1) else(PROFILING) target_compile_definitions(univerxel PRIVATE FIXED_WINDOW=${FIXED_WINDOW} HN_USE_FILESYSTEM=1) endif(PROFILING) file(COPY content/shaders DESTINATION ${CMAKE_BINARY_DIR}/content) file(COPY content/textures DESTINATION ${CMAKE_BINARY_DIR}/content) # Docs add_custom_target(docs COMMAND doxygen ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile WORKING_DIRECTORY ${CMAKE_BINARY_DIR} COMMENT "Build doc." ) # Zstd dictionary file(GLOB SMP_SOURCES "src/zstd_sampler.cpp" "src/world/Chunk.cpp" "include/FastNoiseSIMD/*.cpp") add_executable(zstd_sampler EXCLUDE_FROM_ALL ${SMP_SOURCES}) target_compile_features(zstd_sampler PUBLIC cxx_std_17) target_link_libraries(zstd_sampler ${LINKED_LIBS}) target_include_directories(zstd_sampler PRIVATE "include/FastNoiseSIMD" "include/robin_hood") # target_compile_definitions(zstd_sampler PRIVATE HN_USE_FILESYSTEM=1) add_custom_command(OUTPUT "${CMAKE_BINARY_DIR}/content/zstd.dict" COMMAND "${CMAKE_BINARY_DIR}/zstd_sampler" DEPENDS zstd_sampler) add_custom_target(generate_dictionary DEPENDS "${CMAKE_BINARY_DIR}/content/zstd.dict")