2022-08-07 15:33:54 +08:00
|
|
|
# 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)
|
|
|
|
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()
|
|
|
|
|
2020-12-04 09:39:06 +08:00
|
|
|
include_directories("${PROJECT_SOURCE_DIR}/lib/graphics_engine/include")
|
2022-04-19 12:49:05 +08:00
|
|
|
include_directories("${PROJECT_SOURCE_DIR}/lib/graphics_utils")
|
2021-04-14 09:34:59 +08:00
|
|
|
include_directories("${PROJECT_SOURCE_DIR}/lib/irrlicht/include")
|
2022-07-24 12:22:06 +08:00
|
|
|
include_directories("${PROJECT_SOURCE_DIR}/lib/bullet/src")
|
2021-06-10 01:02:24 +08:00
|
|
|
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()
|
|
|
|
|
2021-06-10 13:21:11 +08:00
|
|
|
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()
|
|
|
|
|
2021-04-18 09:46:44 +08:00
|
|
|
if(UNIX OR MINGW)
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x")
|
|
|
|
endif()
|
2021-06-10 13:21:11 +08:00
|
|
|
|
|
|
|
set(GE_SOURCES
|
2020-12-04 09:39:06 +08:00
|
|
|
src/gl.c
|
2022-08-07 15:33:54 +08:00
|
|
|
src/ge_compressor_astc_4x4.cpp
|
2022-08-25 15:13:23 +08:00
|
|
|
src/ge_compressor_bptc_bc7.cpp
|
2022-08-06 09:48:11 +08:00
|
|
|
src/ge_compressor_s3tc_bc3.cpp
|
2022-07-18 13:28:07 +08:00
|
|
|
src/ge_culling_tool.cpp
|
|
|
|
src/ge_dx9_texture.cpp
|
2021-04-14 09:34:59 +08:00
|
|
|
src/ge_main.cpp
|
|
|
|
src/ge_texture.cpp
|
2022-07-11 12:58:03 +08:00
|
|
|
src/ge_vma.cpp
|
2022-03-19 15:14:55 +08:00
|
|
|
src/ge_vulkan_2d_renderer.cpp
|
2022-08-20 15:44:38 +08:00
|
|
|
src/ge_vulkan_array_texture.cpp
|
2022-07-17 16:06:52 +08:00
|
|
|
src/ge_vulkan_animated_mesh_scene_node.cpp
|
2022-09-14 16:19:38 +08:00
|
|
|
src/ge_vulkan_billboard_buffer.cpp
|
2022-06-16 12:00:15 +08:00
|
|
|
src/ge_vulkan_camera_scene_node.cpp
|
2022-04-17 14:08:29 +08:00
|
|
|
src/ge_vulkan_command_loader.cpp
|
2022-07-10 14:48:07 +08:00
|
|
|
src/ge_vulkan_depth_texture.cpp
|
2021-06-10 01:02:24 +08:00
|
|
|
src/ge_vulkan_driver.cpp
|
2022-07-18 13:28:07 +08:00
|
|
|
src/ge_vulkan_draw_call.cpp
|
2022-03-19 15:14:55 +08:00
|
|
|
src/ge_vulkan_dynamic_buffer.cpp
|
2022-07-24 11:38:02 +08:00
|
|
|
src/ge_vulkan_fbo_texture.cpp
|
2022-03-19 15:14:55 +08:00
|
|
|
src/ge_vulkan_features.cpp
|
2022-05-29 12:33:06 +08:00
|
|
|
src/ge_vulkan_mesh_cache.cpp
|
2022-07-17 16:06:52 +08:00
|
|
|
src/ge_vulkan_mesh_scene_node.cpp
|
2022-06-07 10:34:08 +08:00
|
|
|
src/ge_vulkan_scene_manager.cpp
|
2022-03-18 16:24:33 +08:00
|
|
|
src/ge_vulkan_shader_manager.cpp
|
2022-08-21 14:09:56 +08:00
|
|
|
src/ge_vulkan_skybox_renderer.cpp
|
2022-03-01 13:22:20 +08:00
|
|
|
src/ge_vulkan_texture.cpp
|
2022-07-15 14:09:57 +08:00
|
|
|
src/ge_vulkan_texture_descriptor.cpp
|
2021-04-17 12:44:25 +08:00
|
|
|
src/ge_gl_texture.cpp
|
2022-05-22 11:53:02 +08:00
|
|
|
src/ge_spm.cpp
|
2022-08-02 10:21:07 +08:00
|
|
|
src/ge_spm_buffer.cpp
|
2020-12-04 09:39:06 +08:00
|
|
|
)
|
2021-06-10 13:21:11 +08:00
|
|
|
|
|
|
|
if(NOT APPLE OR DLOPEN_MOLTENVK)
|
|
|
|
set(GE_SOURCES ${GE_SOURCES} src/vulkan.c)
|
|
|
|
endif()
|
|
|
|
|
2022-08-25 15:13:23 +08:00
|
|
|
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()
|
|
|
|
|
2021-06-10 13:21:11 +08:00
|
|
|
add_library(graphics_engine STATIC ${GE_SOURCES})
|
2022-08-25 15:13:23 +08:00
|
|
|
if(BC7_ISPC)
|
|
|
|
set_property(TARGET graphics_engine PROPERTY ISPC_INSTRUCTION_SETS avx2)
|
|
|
|
endif()
|
2022-08-06 09:48:11 +08:00
|
|
|
|
|
|
|
target_link_libraries(graphics_engine ${SQUISH_LIBRARY})
|
2022-08-07 15:33:54 +08:00
|
|
|
|
|
|
|
if(ENABLE_LIBASTCENC)
|
|
|
|
target_link_libraries(graphics_engine ${LIBASTCENC_LIBRARY})
|
|
|
|
endif()
|