Skip to content

Commit

Permalink
Modernize cmake. Add git version to build.
Browse files Browse the repository at this point in the history
  • Loading branch information
rectalogic committed Mar 22, 2024
1 parent 68b2704 commit c92a622
Show file tree
Hide file tree
Showing 8 changed files with 46 additions and 17 deletions.
15 changes: 9 additions & 6 deletions builders/Linux/iwyu.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,14 @@

set -e

CURRENT=${BASH_SOURCE%/*}
source "$CURRENT/../versions"

BUILD_TYPE=${BUILD_TYPE:-Debug}
mkdir -p /mediafx/build/Linux/${BUILD_TYPE}
cd /mediafx/build/Linux/${BUILD_TYPE}
if [ ! -f "qt${QT_VER}.imp" ]; then
curl -O https://raw.githubusercontent.com/include-what-you-use/include-what-you-use/clang_13/mapgen/iwyu-mapgen-qt.py
python3 iwyu-mapgen-qt.py ${QTDIR}/include > qt${QT_VER}.imp
MEDIAFX_BUILD=${BUILD_ROOT}/${BUILD_TYPE}
mkdir -p "${MEDIAFX_BUILD}"
if [ ! -f "${MEDIAFX_BUILD}/qt${QT_VER}.imp" ]; then
curl -o "${MEDIAFX_BUILD}/iwyu-mapgen-qt.py" https://raw.githubusercontent.com/include-what-you-use/include-what-you-use/clang_13/mapgen/iwyu-mapgen-qt.py
python3 "${MEDIAFX_BUILD}/iwyu-mapgen-qt.py" ${QTDIR}/include > "${MEDIAFX_BUILD}/qt${QT_VER}.imp"
fi
CC="clang" CXX="clang++" cmake -DCMAKE_CXX_INCLUDE_WHAT_YOU_USE="/usr/bin/iwyu;-Xiwyu;--mapping_file=/mediafx/build/Linux/${BUILD_TYPE}/qt${QT_VER}.imp;-Xiwyu;--mapping_file=/mediafx/builders/Linux/iwyu.imp;-Xiwyu;--cxx17ns;-Xiwyu;--no_comments" --install-prefix ${QTDIR} ../../.. && exec cmake --build . --parallel 4
CC="clang" CXX="clang++" cmake -S "${SOURCE_ROOT}" -B "$MEDIAFX_BUILD" -DCMAKE_CXX_INCLUDE_WHAT_YOU_USE="/usr/bin/iwyu;-Xiwyu;--mapping_file=${MEDIAFX_BUILD}/qt${QT_VER}.imp;-Xiwyu;--mapping_file=/mediafx/builders/Linux/iwyu.imp;-Xiwyu;--cxx17ns;-Xiwyu;--no_comments" --install-prefix ${QTDIR} && exec cmake --build "${MEDIAFX_BUILD}" --parallel 4
16 changes: 10 additions & 6 deletions builders/Linux/lint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,18 @@
# Copyright (C) 2024 Andrew Wason
# SPDX-License-Identifier: GPL-3.0-or-later

CURRENT=${BASH_SOURCE%/*}
source "$CURRENT/../versions"

BUILD_TYPE=${BUILD_TYPE:-Debug}
mkdir -p /mediafx/build/Linux/${BUILD_TYPE}
cd /mediafx/build/Linux/${BUILD_TYPE}
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=${BUILD_TYPE} --install-prefix ${QTDIR} ../../.. || exit 1
MEDIAFX_BUILD=${BUILD_ROOT}/${BUILD_TYPE}
mkdir -p "${MEDIAFX_BUILD}"
cmake -S "${SOURCE_ROOT}" -B "$MEDIAFX_BUILD" -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=${BUILD_TYPE} --install-prefix ${QTDIR} || exit 1
# Generate *.moc include files for tests
make tst_encoder_autogen/fast tst_decoder_autogen/fast tst_interval_autogen/fast || exit 1
cmake --build "${MEDIAFX_BUILD}" --target tst_encoder_autogen/fast tst_decoder_autogen/fast tst_interval_autogen/fast || exit 1

cd /mediafx
git config --global --add safe.directory /mediafx
FILES=$(git ls-files '**/*.cpp' '**/*.h')
/usr/bin/clang-tidy -p /mediafx/build/Linux/${BUILD_TYPE} $FILES || exit 1
/usr/bin/clazy-standalone -p /mediafx/build/Linux/${BUILD_TYPE}/compile_commands.json $FILES || exit 1
/usr/bin/clang-tidy -p "${MEDIAFX_BUILD}" $FILES || exit 1
/usr/bin/clazy-standalone -p "${MEDIAFX_BUILD}/compile_commands.json" $FILES || exit 1
3 changes: 1 addition & 2 deletions builders/mediafx-build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,4 @@ source "$CURRENT/versions"
BUILD_TYPE=${BUILD_TYPE:-Release}
MEDIAFX_BUILD="${BUILD_ROOT}/${BUILD_TYPE}"
mkdir -p "$MEDIAFX_BUILD"
cd "$MEDIAFX_BUILD"
(cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE --install-prefix "${QTDIR}" ../../.. && cmake --build . && ${SUDO} cmake --install .) || exit 1
(cmake -S "${SOURCE_ROOT}" -B "$MEDIAFX_BUILD" -DCMAKE_BUILD_TYPE=$BUILD_TYPE --install-prefix "${QTDIR}" && cmake --build "$MEDIAFX_BUILD" && ${SUDO} cmake --install "$MEDIAFX_BUILD") || exit 1
3 changes: 1 addition & 2 deletions builders/mediafx-test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,4 @@ CURRENT=${BASH_SOURCE%/*}
source "$CURRENT/versions"

BUILD_TYPE=${BUILD_TYPE:-Release}
cd "${BUILD_ROOT}/${BUILD_TYPE}" || exit 1
ctest --output-on-failure "${@}" || exit 1
ctest --test-dir "${BUILD_ROOT}/${BUILD_TYPE}" --output-on-failure "${@}" || exit 1
1 change: 1 addition & 0 deletions builders/versions
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
export QT_VER=6.6.2
export SOURCE_ROOT="${BASH_SOURCE%/*}/.."
BUILD_ROOT="${BASH_SOURCE%/*}/../build/$(uname)"
mkdir -p "${BUILD_ROOT}"
export BUILD_ROOT=$(cd "${BUILD_ROOT}"; pwd)
Expand Down
16 changes: 16 additions & 0 deletions src/MediaFX/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,19 @@ pkg_search_module(libavutil REQUIRED IMPORTED_TARGET libavutil>=56.70.100)

option(EVENT_LOGGER "Enable event logger" OFF)

find_package(Git QUIET)

if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
execute_process(COMMAND ${GIT_EXECUTABLE} describe --dirty --always
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE MEDIAFX_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE)
else()
set(MEDIAFX_VERSION dev)
endif()

configure_file("version.h.in" "version.h")

qt_add_library(mediafx STATIC
application.cpp
session.cpp
Expand All @@ -34,6 +47,9 @@ qt_add_executable(mediafxtool
main.cpp
)

# For generated version.h
target_include_directories(mediafxtool PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")

if(EVENT_LOGGER)
target_sources(mediafxtool PRIVATE event_logger.h)
add_compile_definitions(EVENTLOGGER)
Expand Down
3 changes: 2 additions & 1 deletion src/MediaFX/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include "media_manager.h"
#include "output_format.h"
#include "session.h"
#include "version.h"
#include <QCommandLineOption>
#include <QCommandLineParser>
#include <QDebug>
Expand Down Expand Up @@ -47,7 +48,7 @@ int main(int argc, char* argv[])
app.setApplicationName(u"MediaFX"_s);

QCommandLineParser parser;
parser.setApplicationDescription(u"MediaFX\nCopyright (C) 2023-2024 Andrew Wason\nSPDX-License-Identifier: GPL-3.0-or-later"_s);
parser.setApplicationDescription(u"MediaFX\nCopyright (C) 2023-2024 Andrew Wason\nSPDX-License-Identifier: GPL-3.0-or-later\nVersion: %1"_s.arg(MediaFXVersion));
parser.setSingleDashWordOptionMode(QCommandLineParser::ParseAsLongOptions);
parser.addHelpOption();
parser.addOption({ { u"f"_s, u"fps"_s }, u"Output frames per second, can be integer or rational e.g. 30000/1001."_s, u"fps"_s, u"30"_s });
Expand Down
6 changes: 6 additions & 0 deletions src/MediaFX/version.h.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
// Copyright (C) 2024 Andrew Wason
// SPDX-License-Identifier: GPL-3.0-or-later

#pragma once

inline constexpr auto MediaFXVersion = "@MEDIAFX_VERSION@";

0 comments on commit c92a622

Please sign in to comment.