From fed53fdda40b9ac6a668228cf5c892e9158eea4f Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Sun, 27 Jul 2025 17:53:35 +0800 Subject: [PATCH 1/2] dependency.dav1d.cmake: refine meson --buildtype mapping --- cmake/dependency.dav1d.cmake | 6 ++++-- cmake/external_project_common.cmake | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/cmake/dependency.dav1d.cmake b/cmake/dependency.dav1d.cmake index 02f19bd..c6da612 100644 --- a/cmake/dependency.dav1d.cmake +++ b/cmake/dependency.dav1d.cmake @@ -66,13 +66,15 @@ if (MSVC) set(DAVID_DEBUG_LIBRARY libdav1d_deb) elseif(UNIX) - string(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_FOR_STUPID_MESON) + if (NOT DAVID_MESON_BUILDTYPE) + meson_build_type_from_cmake(DAVID_MESON_BUILDTYPE) + endif() ExternalProject_Add_Step(DAVID build_unix DEPENDEES configure DEPENDERS build COMMAND echo "Build Unix" - COMMAND ${MESON_EXECUTABLE} setup ${CMAKE_BINARY_DIR}/dav1d/build_unix --backend ninja --buildtype ${CMAKE_BUILD_TYPE_FOR_STUPID_MESON} + COMMAND ${MESON_EXECUTABLE} setup ${CMAKE_BINARY_DIR}/dav1d/build_unix --backend ninja --buildtype ${DAVID_MESON_BUILDTYPE} --default-library static -Denable_tools=false -Denable_tests=false --prefix ${CMAKE_BINARY_DIR}/dav1d/install --libdir=lib COMMAND ${MESON_EXECUTABLE} compile -C ${CMAKE_BINARY_DIR}/dav1d/build_unix COMMAND ${MESON_EXECUTABLE} install -C ${CMAKE_BINARY_DIR}/dav1d/build_unix diff --git a/cmake/external_project_common.cmake b/cmake/external_project_common.cmake index fa16c99..29e304c 100644 --- a/cmake/external_project_common.cmake +++ b/cmake/external_project_common.cmake @@ -66,4 +66,22 @@ if(NOT _EXTERNAL_PROJECT_INCLUDE_GUARD_) link_config_aware_library_path2(${TARGET_} ${PREFIX_} ${LIBRARY_} ${LIBRARY_}) endmacro() + function(meson_build_type_from_cmake RETVAR_) + string(TOLOWER "${CMAKE_BUILD_TYPE}" _CMAKE_BUILD_TYPE_LOWER) + if(_CMAKE_BUILD_TYPE_LOWER STREQUAL "debug") + set("${RETVAR_}" "debug" PARENT_SCOPE) + elseif(_CMAKE_BUILD_TYPE_LOWER STREQUAL "release") + set("${RETVAR_}" "release" PARENT_SCOPE) + elseif(_CMAKE_BUILD_TYPE_LOWER STREQUAL "relwithdebinfo") + set("${RETVAR_}" "debugoptimized" PARENT_SCOPE) + elseif(_CMAKE_BUILD_TYPE_LOWER STREQUAL "minsizerel") + set ("${RETVAR_}" "minsize" PARENT_SCOPE) + else() + message(WARNING + "Custom CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} does not correspond to a Meson buildtype. + You may wish to specify a custom ${RETVAR_}." + ) + set ("${RETVAR_}" "custom" PARENT_SCOPE) + endif() + endfunction() endif() From 1b99a6f7630f9d62a687fc6f09b266a525608031 Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Tue, 26 Aug 2025 20:00:11 +0800 Subject: [PATCH 2/2] dependency.dav1d.cmake: respect custom buildtype as well when building with MSVC --- cmake/dependency.dav1d.cmake | 42 +++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/cmake/dependency.dav1d.cmake b/cmake/dependency.dav1d.cmake index c6da612..b128f1f 100644 --- a/cmake/dependency.dav1d.cmake +++ b/cmake/dependency.dav1d.cmake @@ -35,41 +35,43 @@ ExternalProject_Get_Property(DAVID SOURCE_DIR) set(DAVID_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/dav1d/install/include) set(DAVID_LINK_DIRS ${CMAKE_BINARY_DIR}/dav1d/install/lib) +if (NOT DAVID_MESON_BUILDTYPE) + meson_build_type_from_cmake(DAVID_MESON_BUILDTYPE) +endif() + if (MSVC) ExternalProject_Add_Step(DAVID build_debug DEPENDEES configure DEPENDERS build - COMMAND echo "Build Debug" + COMMAND echo "Build MSVC debug" COMMAND ${MESON_EXECUTABLE} setup ${CMAKE_BINARY_DIR}/dav1d/build_debug --backend vs2022 --buildtype debug --default-library static -Denable_tools=false -Denable_tests=false --prefix ${CMAKE_BINARY_DIR}/dav1d/install COMMAND ${CMAKE_VS_MSBUILD_COMMAND} ${CMAKE_BINARY_DIR}/dav1d/build_debug/dav1d.sln COMMAND ${CMAKE_VS_MSBUILD_COMMAND} ${CMAKE_BINARY_DIR}/dav1d/build_debug/RUN_INSTALL.vcxproj - COMMAND ${CMAKE_COMMAND} -E rename ${DAVID_LINK_DIRS}/libdav1d.a ${DAVID_LINK_DIRS}/libdav1d_deb.lib + COMMAND ${CMAKE_COMMAND} -E rename ${DAVID_LINK_DIRS}/libdav1d.a ${DAVID_LINK_DIRS}/libdav1d_debug.lib COMMAND echo " -- Done" WORKING_DIRECTORY ${SOURCE_DIR} ) - ExternalProject_Add_Step(DAVID build_release - DEPENDEES build_debug - DEPENDERS build - COMMAND echo "Build Release" - COMMAND ${MESON_EXECUTABLE} setup ${CMAKE_BINARY_DIR}/dav1d/build_release --backend vs2022 --buildtype release - --default-library static -Denable_tools=false -Denable_tests=false --prefix ${CMAKE_BINARY_DIR}/dav1d/install - COMMAND ${CMAKE_VS_MSBUILD_COMMAND} ${CMAKE_BINARY_DIR}/dav1d/build_release/dav1d.sln - COMMAND ${CMAKE_VS_MSBUILD_COMMAND} ${CMAKE_BINARY_DIR}/dav1d/build_release/RUN_INSTALL.vcxproj - COMMAND ${CMAKE_COMMAND} -E rename ${DAVID_LINK_DIRS}/libdav1d.a ${DAVID_LINK_DIRS}/libdav1d_rel.lib - COMMAND echo " -- Done" - WORKING_DIRECTORY ${SOURCE_DIR} - ) + if (NOT DAVID_MESON_BUILDTYPE STREQUAL "debug") + ExternalProject_Add_Step(DAVID build_${DAVID_MESON_BUILDTYPE} + DEPENDEES build_debug + DEPENDERS build + COMMAND echo "Build MSVC ${DAVID_MESON_BUILDTYPE}" + COMMAND ${MESON_EXECUTABLE} setup ${CMAKE_BINARY_DIR}/dav1d/build_${DAVID_MESON_BUILDTYPE} --backend vs2022 --buildtype ${DAVID_MESON_BUILDTYPE} + --default-library static -Denable_tools=false -Denable_tests=false --prefix ${CMAKE_BINARY_DIR}/dav1d/install + COMMAND ${CMAKE_VS_MSBUILD_COMMAND} ${CMAKE_BINARY_DIR}/dav1d/build_${DAVID_MESON_BUILDTYPE}/dav1d.sln + COMMAND ${CMAKE_VS_MSBUILD_COMMAND} ${CMAKE_BINARY_DIR}/dav1d/build_${DAVID_MESON_BUILDTYPE}/RUN_INSTALL.vcxproj + COMMAND ${CMAKE_COMMAND} -E rename ${DAVID_LINK_DIRS}/libdav1d.a ${DAVID_LINK_DIRS}/libdav1d_${DAVID_MESON_BUILDTYPE}.lib + COMMAND echo " -- Done" + WORKING_DIRECTORY ${SOURCE_DIR} + ) + endif() - set(DAVID_LIBRARY libdav1d_rel) - set(DAVID_DEBUG_LIBRARY libdav1d_deb) + set(DAVID_LIBRARY libdav1d_${DAVID_MESON_BUILDTYPE}) + set(DAVID_DEBUG_LIBRARY libdav1d_debug) elseif(UNIX) - if (NOT DAVID_MESON_BUILDTYPE) - meson_build_type_from_cmake(DAVID_MESON_BUILDTYPE) - endif() - ExternalProject_Add_Step(DAVID build_unix DEPENDEES configure DEPENDERS build