# 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 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) 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_s3tc_bc3.cpp src/ge_culling_tool.cpp src/ge_dx9_texture.cpp src/ge_main.cpp src/ge_texture.cpp src/ge_vma.cpp src/ge_vulkan_2d_renderer.cpp src/ge_vulkan_animated_mesh_scene_node.cpp src/ge_vulkan_camera_scene_node.cpp src/ge_vulkan_command_loader.cpp src/ge_vulkan_depth_texture.cpp src/ge_vulkan_driver.cpp src/ge_vulkan_draw_call.cpp src/ge_vulkan_dynamic_buffer.cpp src/ge_vulkan_fbo_texture.cpp src/ge_vulkan_features.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_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() add_library(graphics_engine STATIC ${GE_SOURCES}) target_link_libraries(graphics_engine ${SQUISH_LIBRARY}) if(ENABLE_LIBASTCENC) target_link_libraries(graphics_engine ${LIBASTCENC_LIBRARY}) endif()