Skip to content
Open
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
44 changes: 24 additions & 20 deletions cmake/dependency.dav1d.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -35,44 +35,48 @@ 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}
)

set(DAVID_LIBRARY libdav1d_rel)
set(DAVID_DEBUG_LIBRARY libdav1d_deb)
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_${DAVID_MESON_BUILDTYPE})
set(DAVID_DEBUG_LIBRARY libdav1d_debug)

elseif(UNIX)
string(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_FOR_STUPID_MESON)

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
Expand Down
18 changes: 18 additions & 0 deletions cmake/external_project_common.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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()