This commit is contained in:
2026-03-03 08:13:16 +03:00
commit 85685e7e17
19 changed files with 2887 additions and 0 deletions

100
CMakeLists.txt Normal file
View File

@@ -0,0 +1,100 @@
cmake_minimum_required(VERSION 3.16)
project(Eclipt VERSION 1.0.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
option(ECLIPT_BUILD_SHARED "Build shared library" ON)
option(ECLIPT_BUILD_EXAMPLES "Build examples" OFF)
option(ECLIPT_USE_SDL2 "Use SDL2 for Linux display" ON)
find_package(PkgConfig REQUIRED)
pkg_check_modules(FFMPEG REQUIRED
libavformat
libavcodec
libavutil
libswscale
libswresample
)
if(ECLIPT_USE_SDL2)
pkg_check_modules(SDL2 REQUIRED sdl2)
endif()
include_directories(
${CMAKE_SOURCE_DIR}/libEcliptPlayer/include
${CMAKE_SOURCE_DIR}/platform/linux/include
${FFMPEG_INCLUDE_DIRS}
)
if(ECLIPT_USE_SDL2)
include_directories(${SDL2_INCLUDE_DIRS})
endif()
set(ECLIPT_SOURCES
libEcliptPlayer/src/core/EcliptPlayer.cpp
libEcliptPlayer/src/demuxer/FFmpegDemuxer.cpp
libEcliptPlayer/src/decoder/FFmpegDecoder.cpp
libEcliptPlayer/src/subtitle/SubtitleRenderer.cpp
libEcliptPlayer/src/playlist/Playlist.cpp
libEcliptPlayer/src/playlist/EPG.cpp
)
set(ECLIPT_HEADERS
libEcliptPlayer/include/eclipt/Config.h
libEcliptPlayer/include/eclipt/Decoder.h
libEcliptPlayer/include/eclipt/Demuxer.h
libEcliptPlayer/include/eclipt/EcliptPlayer.h
libEcliptPlayer/include/eclipt/EPG.h
libEcliptPlayer/include/eclipt/Frame.h
libEcliptPlayer/include/eclipt/Playlist.h
libEcliptPlayer/include/eclipt/Subtitle.h
)
add_library(EcliptPlayer ${ECLIPT_SOURCES} ${ECLIPT_HEADERS})
target_link_libraries(EcliptPlayer PRIVATE ${FFMPEG_LIBRARIES})
target_compile_options(EcliptPlayer PRIVATE ${FFMPEG_CFLAGS})
if(WIN32)
target_compile_definitions(EcliptPlayer PRIVATE _CRT_SECURE_NO_WARNINGS)
endif()
set_target_properties(EcliptPlayer PROPERTIES
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR}
PUBLIC_HEADER "${ECLIPT_HEADERS}"
)
if(UNIX AND NOT APPLE)
install(TARGETS EcliptPlayer
LIBRARY DESTINATION lib
PUBLIC_HEADER DESTINATION include/eclipt
)
endif()
if(ECLIPT_USE_SDL2)
set(LINUX_SOURCES
platform/linux/src/EcliptLinux.cpp
platform/linux/src/main.cpp
)
add_executable(eclipt-linux ${LINUX_SOURCES})
target_link_libraries(eclipt-linux PRIVATE
EcliptPlayer
${SDL2_LIBRARIES}
pthread
)
endif()
if(ECLIPT_BUILD_EXAMPLES)
add_subdirectory(examples)
endif()
message(STATUS "Eclipt version: ${PROJECT_VERSION}")
message(STATUS "FFmpeg version: ${FFMPEG_VERSION}")
message(STATUS "Build shared: ${ECLIPT_BUILD_SHARED}")
message(STATUS "Use SDL2: ${ECLIPT_USE_SDL2}")