123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- # Distro package just use libastcenc.so, find it first
- find_library(LIBASTCENC_LIBRARY NAMES libastcenc astcenc astcenc-avx2-static astcenc-sse4.1-static astcenc-sse2-static astcenc-neon-static astcenc-native-static)
- find_path(LIBASTCENC_INCLUDEDIR NAMES astcenc.h PATHS)
- if (LIBASTCENC_LIBRARY AND LIBASTCENC_INCLUDEDIR)
- set(ENABLE_LIBASTCENC 1)
- add_definitions(-DENABLE_LIBASTCENC)
- include_directories("${LIBASTCENC_INCLUDEDIR}")
- message(STATUS "Use libastcenc: ${LIBASTCENC_LIBRARY}")
- if (NOT MSVC)
- set(CMAKE_REQUIRED_FLAGS "-std=c++11")
- endif()
- set(CMAKE_REQUIRED_INCLUDES ${LIBASTCENC_INCLUDEDIR})
- set(CMAKE_REQUIRED_LIBRARIES ${LIBASTCENC_LIBRARY})
- include(CheckCXXSourceCompiles)
- check_cxx_source_compiles("
- #define ASTCENC_DYNAMIC_LIBRARY 1
- #include <astcenc.h>
- int main()
- {
- astcenc_context_free(NULL);
- return 0;
- }
- " ASTCENC_DLL)
- if (NOT MSVC)
- unset(CMAKE_REQUIRED_FLAGS)
- endif()
- unset(CMAKE_REQUIRED_INCLUDES)
- unset(CMAKE_REQUIRED_LIBRARIES)
- if (ASTCENC_DLL AND NOT IOS)
- message(STATUS "libastcenc: -DASTCENC_DYNAMIC_LIBRARY required")
- add_definitions(-DASTCENC_DYNAMIC_LIBRARY)
- endif()
- else()
- message(WARNING "Missing astc-encoder for astc support, "
- "visit https://github.com/ARM-software/astc-encoder for details")
- endif()
- include_directories("${PROJECT_SOURCE_DIR}/lib/graphics_engine/include")
- include_directories("${PROJECT_SOURCE_DIR}/lib/graphics_utils")
- include_directories("${PROJECT_SOURCE_DIR}/lib/irrlicht/include")
- include_directories("${PROJECT_SOURCE_DIR}/lib/bullet/src")
- find_path(SDL2_INCLUDEDIR NAMES SDL.h PATH_SUFFIXES SDL2 include/SDL2 include PATHS)
- if (NOT SDL2_INCLUDEDIR)
- message(FATAL_ERROR "SDL2 not found.")
- else()
- include_directories("${SDL2_INCLUDEDIR}")
- endif()
- if(APPLE AND NOT DLOPEN_MOLTENVK)
- find_path(VULKAN_INCLUDEDIR NAMES vulkan/vulkan.h PATHS)
- if (NOT VULKAN_INCLUDEDIR)
- message(FATAL_ERROR "Vulkan not found.")
- else()
- include_directories("${VULKAN_INCLUDEDIR}")
- endif()
- endif()
- if(UNIX OR MINGW)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x")
- endif()
- set(GE_SOURCES
- src/gl.c
- src/ge_compressor_astc_4x4.cpp
- src/ge_compressor_bptc_bc7.cpp
- src/ge_compressor_s3tc_bc3.cpp
- src/ge_culling_tool.cpp
- src/ge_dx9_texture.cpp
- src/ge_main.cpp
- src/ge_occlusion_culling.cpp
- src/ge_texture.cpp
- src/ge_vma.cpp
- src/ge_vulkan_2d_renderer.cpp
- src/ge_vulkan_array_texture.cpp
- src/ge_vulkan_animated_mesh_scene_node.cpp
- src/ge_vulkan_attachment_texture.cpp
- src/ge_vulkan_billboard_buffer.cpp
- src/ge_vulkan_camera_scene_node.cpp
- src/ge_vulkan_command_loader.cpp
- src/ge_vulkan_driver.cpp
- src/ge_vulkan_draw_call.cpp
- src/ge_vulkan_dynamic_buffer.cpp
- src/ge_vulkan_dynamic_spm_buffer.cpp
- src/ge_vulkan_environment_map.cpp
- src/ge_vulkan_fbo_texture.cpp
- src/ge_vulkan_features.cpp
- src/ge_vulkan_light_handler.cpp
- src/ge_vulkan_mesh_cache.cpp
- src/ge_vulkan_mesh_scene_node.cpp
- src/ge_vulkan_scene_manager.cpp
- src/ge_vulkan_shader_manager.cpp
- src/ge_vulkan_skybox_renderer.cpp
- src/ge_vulkan_texture.cpp
- src/ge_vulkan_texture_descriptor.cpp
- src/ge_gl_texture.cpp
- src/ge_spm.cpp
- src/ge_spm_buffer.cpp
- )
- if(NOT APPLE OR DLOPEN_MOLTENVK)
- set(GE_SOURCES ${GE_SOURCES} src/vulkan.c)
- endif()
- option(BC7_ISPC "Enable BC7 (BPTC) support (requires ispc and cmake >= 3.19)" OFF)
- if(BC7_ISPC)
- add_definitions(-DBC7_ISPC)
- enable_language(ISPC)
- set(CMAKE_ISPC_FLAGS "${CMAKE_ISPC_FLAGS} --opt=fast-math --opt=disable-assertions --pic")
- set(GE_SOURCES
- ${GE_SOURCES}
- src/bc7e.ispc
- )
- include_directories("${CMAKE_CURRENT_BINARY_DIR}")
- endif()
- add_library(graphics_engine STATIC ${GE_SOURCES})
- if(BC7_ISPC)
- set_property(TARGET graphics_engine PROPERTY ISPC_INSTRUCTION_SETS avx2)
- endif()
- target_link_libraries(graphics_engine ${SQUISH_LIBRARY})
- if(ENABLE_LIBASTCENC)
- target_link_libraries(graphics_engine ${LIBASTCENC_LIBRARY})
- endif()
|