Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions .github/workflows/MediaConch_Build_Lib.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Build_libs

on: [push, pull_request]

jobs:
build:
strategy:
matrix:
library_type: [static, shared]
os: [ubuntu-latest, macos-latest, windows-latest]
include:
- os: ubuntu-latest
cmake_preset_name: conan-release
- os: macos-latest
cmake_preset_name: conan-release
- os: windows-latest
cmake_preset_name: conan-default
fail-fast: false
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
cache: 'pip' # caching pip dependencies
- name: "install dependencies" # use conan package manager to install c and c++ dependencies
run: |
pip install --disable-pip-version-check uv
uvx conan profile detect
uvx conan install -of build --requires="zlib/1.3.1" --requires="libxslt/1.1.43" --requires="libxml2/2.13.8" --requires="libzen/0.4.38" --requires="libmediainfo/22.03" --build=missing -g CMakeDeps -g CMakeToolchain
- name: Configure cmake
run: |
cmake --preset ${{ matrix.cmake_preset_name }} -D BUILD_SHARED_LIBS=${{ matrix.library_type == 'static' && 'NO' || 'YES'}}
- name: Build
run: |
cmake --build --preset conan-release
- name: Install
run: |
cmake --install build --prefix sample_prefix
19 changes: 19 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
cmake_minimum_required(VERSION 3.5)
project(mediaconch)
set(CMAKE_CXX_STANDARD 11)
cmake_policy(SET CMP0135 NEW)

option(MEDIACONCH_WITH_SQLITE "Enable SQLite DB" OFF)
option(MEDIACONCH_WITH_JANSSON "Enable Jansson Library" OFF)
option(MEDIACONCH_WITH_LIBEVENT "Enable Libevent" OFF)

find_package(ZLIB REQUIRED)
find_package(ZenLib REQUIRED)
find_package(libxml2 REQUIRED)
find_package(LibXslt REQUIRED)
find_package(MediaInfoLib REQUIRED)

find_package(jansson QUIET)
find_package(Libevent QUIET)

add_subdirectory(Source)
2 changes: 2 additions & 0 deletions Source/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Other configurations can be added here such as CLI, or GUI
add_subdirectory(Lib)
93 changes: 93 additions & 0 deletions Source/Lib/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
add_library(MediaConchLib
../Common/Configuration.cpp
../Common/Core.cpp
../Common/DaemonClient.cpp
../Common/Database.cpp
../Common/DatabaseReport.cpp
../Common/DpfManager.cpp
../Common/Http.cpp
../Common/Httpd.cpp
../Common/IMSC1.cpp
../Common/JS_Tree.cpp
../Common/Json.cpp
../Common/LibEventHttp.cpp
../Common/LibEventHttpd.cpp
../Common/MediaConchLib.cpp
../Common/NoDatabaseReport.cpp
../Common/Plugin.cpp
../Common/PluginFileLog.cpp
../Common/PluginPreHook.cpp
../Common/PluginsConfig.cpp
../Common/PluginsManager.cpp
../Common/Policy.cpp
../Common/Policies.cpp
../Common/Queue.cpp
../Common/Reports.cpp
../Common/REST_API.cpp
../Common/Scheduler.cpp
../Common/Schema.cpp
../Common/SQLLite.cpp
../Common/SQLLiteReport.cpp
../Common/UnknownPolicy.cpp
../Common/VeraPDF.cpp
../Common/WatchFolder.cpp
../Common/WatchFoldersManager.cpp
../Common/Xslt.cpp
../Common/XsltPolicy.cpp
../IMSC1/IMSC1Plugin.cpp
../Checker/Checker.cpp
../Checker/Path.cpp
../ThirdParty/tfsxml/tfsxml.cpp
MediaConchDLL.cpp
Lib.cpp
)

target_link_libraries(MediaConchLib
PRIVATE
zen
LibXml2::LibXml2
libxslt::libxslt
ZLIB::ZLIB
mediainfo
)

add_library(MediaConch:lib ALIAS MediaConchLib)

set_target_properties(MediaConchLib PROPERTIES
OUTPUT_NAME mediaconch
PUBLIC_HEADER MediaConchDLL.h
)

target_include_directories(MediaConchLib
PRIVATE
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/Source>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/Source/Lib>
)

if (MEDIACONCH_WITH_SQLITE)
target_sources(MediaConchLib PRIVATE ../ThirdParty/sqlite/sqlite3.c)
target_include_directories(MediaConchLib PRIVATE ../ThirdParty/sqlite)
target_compile_definitions(MediaConchLib PRIVATE HAVE_SQLITE)
endif ()

if(Libevent_FOUND AND MEDIACONCH_WITH_LIBEVENT)
target_link_libraries(MediaConchLib PRIVATE libevent::libevent)
target_compile_definitions(MediaConchLib PRIVATE HAVE_LIBEVENT)
endif ()

if(jansson_FOUND AND MEDIACONCH_WITH_JANSSON)
target_link_libraries(MediaConchLib PRIVATE jansson::jansson)
target_compile_definitions(MediaConchLib PRIVATE HAVE_JANSSON)
endif ()

install(TARGETS MediaConchLib EXPORT MediaConchTargets
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
PUBLIC_HEADER DESTINATION include/MediaConch
)
install(EXPORT MediaConchTargets
FILE MediaConchTargets.cmake
NAMESPACE MediaConch::
DESTINATION share/cmake/${PROJECT_NAME}
)
Loading