diff --git a/CMakeLists.txt b/CMakeLists.txt index 149ebd7a..b14fb02e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,16 +14,15 @@ include(CTest) find_package(PkgConfig REQUIRED) find_package(Threads REQUIRED) find_package(Filesystem REQUIRED) -find_package(FFMPEGAV REQUIRED) +find_package(GTest REQUIRED) find_package(Boost REQUIRED COMPONENTS system program_options) find_package(Wt REQUIRED COMPONENTS Wt Dbo DboSqlite3 HTTP) -find_package(PAM) -find_package(STB) -find_package(PkgConfig REQUIRED) pkg_check_modules(Taglib REQUIRED IMPORTED_TARGET taglib) pkg_check_modules(Config++ REQUIRED IMPORTED_TARGET libconfig++) pkg_check_modules(GraphicsMagick++ IMPORTED_TARGET GraphicsMagick++) -find_package(GTest REQUIRED) +pkg_check_modules(LIBAV IMPORTED_TARGET libavutil libavformat) +find_package(PAM) +find_package(STB) # WT if (NOT Wt_FOUND) @@ -70,7 +69,6 @@ elseif (IMAGE_LIBRARY STREQUAL STB AND NOT STB_FOUND) endif () message(STATUS "IMAGE_LIBRARY set to ${IMAGE_LIBRARY}") - add_subdirectory(src) install(DIRECTORY approot DESTINATION share/lms) diff --git a/Dockerfile-build b/Dockerfile-build index bd39c8a5..a589d12a 100644 --- a/Dockerfile-build +++ b/Dockerfile-build @@ -1,28 +1,39 @@ -FROM alpine:3.14 AS build + +FROM --platform=$BUILDPLATFORM tonistiigi/xx AS xx + +FROM --platform=$BUILDPLATFORM alpine:3.14 +ARG TARGETPLATFORM WORKDIR /tmp/workdir -ARG MAKEFLAGS="-j2" - ARG PREFIX="/tmp/install" -ARG BUILD_PACKAGES=" \ - ca-certificates \ - curl \ - coreutils \ - bzip2 \ - pkgconfig \ - g++ \ - ffmpeg-dev \ +ARG BUILD_PACKAGES="\ + clang \ make \ cmake \ + lld \ + curl \ + tree \ + pkgconfig" + +RUN apk add --no-cache ${BUILD_PACKAGES} + +ARG LMS_BUILD_PACKAGES=" \ + gcc \ + g++ \ + musl-dev \ boost-dev \ + ffmpeg-dev \ libconfig-dev \ taglib-dev \ wt-dev \ gtest-dev" -RUN apk add --no-cache --update ${BUILD_PACKAGES} +# copy xx scripts to your build stage +COPY --from=xx / / + +RUN xx-apk add --no-scripts --no-cache ${LMS_BUILD_PACKAGES} # STB ARG STB_VERSION=b42009b3b9d4ca35bc703f5310eedc74f584be58 @@ -37,8 +48,6 @@ RUN \ COPY . /tmp/lms/ ARG LMS_BUILD_TYPE="Release" RUN \ - DIR=/tmp/lms/build && mkdir -p ${DIR} && cd ${DIR} && \ - CXXFLAGS="-I${PREFIX}/include" cmake /tmp/lms/ -DCMAKE_BUILD_TYPE=${LMS_BUILD_TYPE} && \ - VERBOSE=1 make && \ - make test - + DIR=/tmp/lms/build && mkdir -p ${DIR} && cd ${DIR} && \ + PKG_CONFIG_PATH=/$(xx-info)/usr/lib/pkgconfig CXXFLAGS="-I${PREFIX}/include" cmake /tmp/lms/ -DCMAKE_BUILD_TYPE=${LMS_BUILD_TYPE} $(xx-clang --print-cmake-defines) -DCMAKE_PREFIX_PATH=/$(xx-info)/usr/lib/cmake -DBUILD_TESTING=OFF && \ + VERBOSE=1 make -j$(nproc) diff --git a/Dockerfile-release b/Dockerfile-release index 3d1b59bb..a30db9f2 100644 --- a/Dockerfile-release +++ b/Dockerfile-release @@ -2,8 +2,6 @@ FROM alpine:3.14 AS build WORKDIR /tmp/workdir -ARG MAKEFLAGS="-j2" - ARG PREFIX="/tmp/install" ARG BUILD_PACKAGES=" \ @@ -131,7 +129,6 @@ RUN \ ## Release Stage FROM alpine:3.14 AS release LABEL maintainer="Emeric Poupon " -LABEL version=${LMS_VERSION} ARG RUNTIME_PACKAGES=" \ libssl1.1 \ diff --git a/cmake/modules/FindFFMPEGAV.cmake b/cmake/modules/FindFFMPEGAV.cmake deleted file mode 100644 index 896c10b4..00000000 --- a/cmake/modules/FindFFMPEGAV.cmake +++ /dev/null @@ -1,23 +0,0 @@ -# Quick and dirty av* includes discoverer - -find_path(AVCODEC_INCLUDE_DIR NAMES libavcodec/avcodec.h PATH_SUFFIXES ffmpeg) -find_library(AVCODEC_LIBRARY avcodec) - -find_path(AVFORMAT_INCLUDE_DIR NAMES libavformat/avformat.h PATH_SUFFIXES ffmpeg) -find_library(AVFORMAT_LIBRARY avformat) - -find_path(AVUTIL_INCLUDE_DIR NAMES libavutil/avutil.h PATH_SUFFIXES ffmpeg) -find_library(AVUTIL_LIBRARY avutil) - -include(FindPackageHandleStandardArgs) - -FIND_PACKAGE_HANDLE_STANDARD_ARGS( - FFMPEGAV - FOUND_VAR FFMPEGAV_FOUND - REQUIRED_VARS AVUTIL_LIBRARY AVFORMAT_LIBRARY -) - -mark_as_advanced(AVFORMAT_LIBRARY) -mark_as_advanced(AVUTIL_LIBRARY) - - diff --git a/src/libs/av/CMakeLists.txt b/src/libs/av/CMakeLists.txt index c42826bf..4205e35c 100644 --- a/src/libs/av/CMakeLists.txt +++ b/src/libs/av/CMakeLists.txt @@ -23,8 +23,7 @@ target_link_libraries(lmsav PUBLIC ) target_link_libraries(lmsav PRIVATE - ${AVFORMAT_LIBRARY} - ${AVUTIL_LIBRARY} + PkgConfig::LIBAV ) install(TARGETS lmsav DESTINATION lib) diff --git a/src/libs/metadata/CMakeLists.txt b/src/libs/metadata/CMakeLists.txt index 8ba7b93d..90b6fd92 100644 --- a/src/libs/metadata/CMakeLists.txt +++ b/src/libs/metadata/CMakeLists.txt @@ -1,5 +1,7 @@ -add_subdirectory(test) +if(BUILD_TESTING) + add_subdirectory(test) +endif() add_library(lmsmetadata SHARED impl/AvFormatParser.cpp diff --git a/src/libs/som/CMakeLists.txt b/src/libs/som/CMakeLists.txt index 2e19b9d2..4c967429 100644 --- a/src/libs/som/CMakeLists.txt +++ b/src/libs/som/CMakeLists.txt @@ -1,5 +1,5 @@ -add_library(lmssom STATIC +add_library(lmssom SHARED impl/DataNormalizer.cpp impl/Network.cpp ) @@ -18,3 +18,4 @@ target_link_libraries(lmssom PUBLIC set_property(TARGET lmssom PROPERTY POSITION_INDEPENDENT_CODE ON) +install(TARGETS lmssom DESTINATION lib)