diff --git a/.github/workflows/build-windows-msvc.yml b/.github/workflows/build-windows-msvc.yml index 0d0e27df0..005731d8b 100644 --- a/.github/workflows/build-windows-msvc.yml +++ b/.github/workflows/build-windows-msvc.yml @@ -50,3 +50,7 @@ jobs: - name: Install MLT run: | cmake --install build + + - name: Run tests + run: | + ctest --test-dir build -C Debug diff --git a/CMakeLists.txt b/CMakeLists.txt index 7ca5f98b3..1540c5ee3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -190,6 +190,7 @@ endif() if (MSVC) find_package(PThreads4W REQUIRED) + find_package(Dirent 1.26 REQUIRED) endif () find_package(Threads REQUIRED) find_package(PkgConfig REQUIRED) @@ -335,7 +336,10 @@ endif() if(BUILD_TESTING) find_package(Qt${QT_MAJOR_VERSION} REQUIRED COMPONENTS Core Test) - find_package(Kwalify REQUIRED) + if(NOT MSVC) + # Kwalify is not available for MSVC easily (eg. via vcpkg) + find_package(Kwalify REQUIRED) + endif() enable_testing() endif() diff --git a/CMakePresets.json b/CMakePresets.json index 324cbe961..081af7d6d 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -8,7 +8,7 @@ "binaryDir": "${sourceDir}/build", "toolchainFile": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", "cacheVariables": { - "BUILD_TESTING": "OFF", + "BUILD_TESTING": "ON", "SWIG_PYTHON": "OFF", "MOD_AVFORMAT": "ON", "MOD_DECKLINK": "OFF", @@ -32,7 +32,7 @@ "MOD_RTAUDIO": "OFF", "MOD_RUBBERBAND": "ON", "MOD_SDL2": "ON", - "MOD_DOX": "OFF", + "MOD_SPATIALAUDIO": "OFF", "MOD_VIDSTAB": "OFF", "MOD_VORBIS": "ON", "MOD_XINE": "OFF", diff --git a/cmake/FindDirent.cmake b/cmake/FindDirent.cmake new file mode 100644 index 000000000..ff8a72503 --- /dev/null +++ b/cmake/FindDirent.cmake @@ -0,0 +1,21 @@ +find_package(Dirent CONFIG) + +if(NOT Dirent_FOUND) + include(FindPackageHandleStandardArgs) + + find_path(Dirent_INCLUDE_DIR + NAMES dirent.h + ) + + find_package_handle_standard_args(Dirent + REQUIRED_VARS + Dirent_INCLUDE_DIR + ) + + if(Dirent_FOUND AND NOT TARGET dirent) + add_library(dirent INTERFACE) + set_target_properties(dirent PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${Dirent_INCLUDE_DIR}" + ) + endif() +endif() diff --git a/src/framework/CMakeLists.txt b/src/framework/CMakeLists.txt index aae6c994f..6d16e0938 100644 --- a/src/framework/CMakeLists.txt +++ b/src/framework/CMakeLists.txt @@ -87,7 +87,7 @@ target_compile_options(mlt PRIVATE ${MLT_COMPILE_OPTIONS}) target_link_libraries(mlt PRIVATE Threads::Threads ${CMAKE_DL_LIBS}) if(MSVC) - target_link_libraries(mlt PRIVATE msvccompat PThreads4W::PThreads4W) + target_link_libraries(mlt PRIVATE msvccompat PThreads4W::PThreads4W dirent) else() target_link_libraries(mlt PRIVATE m) endif() diff --git a/src/modules/xml/consumer_xml.c b/src/modules/xml/consumer_xml.c index b5442d0f5..878db67fe 100644 --- a/src/modules/xml/consumer_xml.c +++ b/src/modules/xml/consumer_xml.c @@ -29,6 +29,8 @@ #ifndef _MSC_VER #include +#else +#include #endif #define ID_SIZE 128 diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt index 720225649..eca7b0306 100644 --- a/src/tests/CMakeLists.txt +++ b/src/tests/CMakeLists.txt @@ -18,6 +18,10 @@ function(add_qt_test) mlt++ ${ARG_LINK_LIBRARIES} ) + if(MSVC) + target_link_libraries(${_testname} PRIVATE PThreads4W::PThreads4W) + endif() + target_include_directories(${_testname} PRIVATE ${arg_INCLUDE_DIRS}) add_test(NAME "QtTest:${arg_TEST_NAME}" COMMAND ${_testname}) @@ -51,12 +55,13 @@ if(MOD_QT6) ) endif() - -file(GLOB YML_FILES "${CMAKE_SOURCE_DIR}/src/modules/*/*.yml") -foreach(YML_FILE ${YML_FILES}) - get_filename_component(FILE_NAME ${YML_FILE} NAME) - file(RELATIVE_PATH KWALIFY_TEST_NAME "${CMAKE_SOURCE_DIR}/src/modules" ${YML_FILE}) - if(NOT FILE_NAME MATCHES "resolution_scale.yml") - add_test(NAME "kwalify:${KWALIFY_TEST_NAME}" COMMAND ${Kwalify_EXECUTABLE} -f "${CMAKE_SOURCE_DIR}/src/framework/metaschema.yaml" ${YML_FILE}) - endif() -endforeach() +if(Kwalify_FOUND) + file(GLOB YML_FILES "${CMAKE_SOURCE_DIR}/src/modules/*/*.yml") + foreach(YML_FILE ${YML_FILES}) + get_filename_component(FILE_NAME ${YML_FILE} NAME) + file(RELATIVE_PATH KWALIFY_TEST_NAME "${CMAKE_SOURCE_DIR}/src/modules" ${YML_FILE}) + if(NOT FILE_NAME MATCHES "resolution_scale.yml") + add_test(NAME "kwalify:${KWALIFY_TEST_NAME}" COMMAND ${Kwalify_EXECUTABLE} -f "${CMAKE_SOURCE_DIR}/src/framework/metaschema.yaml" ${YML_FILE}) + endif() + endforeach() +endif() diff --git a/vcpkg.json b/vcpkg.json index 2299fb7be..a01b9155f 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -15,6 +15,8 @@ "libebur128", "gdk-pixbuf", "rubberband", - "libvorbis" + "libvorbis", + "fftw3", + "libexif" ] }