@@ -14,85 +14,52 @@ find_program(MESON_EXECUTABLE meson
1414 REQUIRED
1515)
1616
17+
18+ if (MSVC )
19+ set (MESON_BACKEND ${MSVC_NAME} )
20+ else ()
21+ set (MESON_BACKEND ninja)
22+ endif ()
23+
24+ meson_build_type_from_cmake (MESON_BUILD_TYPE )
25+
1726ExternalProject_Add (DAVID
1827 PREFIX ${EXTERNALPROJECT_BINARY_ROOT} /dav1d
1928 URL "https://code.videolan.org/videolan/dav1d/-/archive/1.5.3/dav1d-1.5.3.zip"
2029 URL_MD5 "1d7d9f14e106ed10d376bac434e113b7"
2130 DOWNLOAD_DIR "${EXTERNALPROJECT_SOURCE_ROOT} /dav1d"
2231 SOURCE_DIR "${EXTERNALPROJECT_SOURCE_PREFIX} /dav1d/source"
2332 BINARY_DIR "${EXTERNALPROJECT_BINARY_ROOT} /dav1d/build"
33+ INSTALL_DIR "${EXTERNALPROJECT_BINARY_ROOT} /dav1d/install"
2434 DOWNLOAD_EXTRACT_TIMESTAMP TRUE
2535 UPDATE_COMMAND ""
2636 PATCH_COMMAND ""
27- CONFIGURE_COMMAND ""
28- BUILD_COMMAND ""
29- INSTALL_COMMAND ""
37+ CONFIGURE_COMMAND ${MESON_EXECUTABLE} setup --backend ${MESON_BACKEND} --buildtype ${MESON_BUILD_TYPE}
38+ --default-library static -Denable_tools=false -Denable_tests=false --prefix ${EXTERNALPROJECT_BINARY_ROOT} /dav1d/install --libdir=lib
39+ ${EXTERNALPROJECT_BINARY_ROOT} /dav1d/build ${EXTERNALPROJECT_SOURCE_PREFIX} /dav1d/source
40+ BUILD_COMMAND ${MESON_EXECUTABLE} compile -C ${EXTERNALPROJECT_BINARY_ROOT} /dav1d/build
41+ INSTALL_COMMAND ${MESON_EXECUTABLE} install -C ${EXTERNALPROJECT_BINARY_ROOT} /dav1d/build
3042 EXCLUDE_FROM_ALL
3143)
3244
33- ExternalProject_Get_Property (DAVID SOURCE_DIR )
34-
35- set (DAVID_INCLUDE_DIRS ${EXTERNALPROJECT_BINARY_ROOT} /dav1d/install/include)
36- set (DAVID_LINK_DIRS ${EXTERNALPROJECT_BINARY_ROOT} /dav1d/install/lib)
37-
38- if (MSVC )
39- ExternalProject_Add_Step (DAVID build_debug
40- DEPENDEES configure
41- DEPENDERS build
42- COMMAND echo "Build Debug"
43- COMMAND ${MESON_EXECUTABLE} setup ${EXTERNALPROJECT_BINARY_ROOT} /dav1d/build_debug --backend ${MSVC_NAME} --buildtype debug
44- --default-library static -Denable_tools=false -Denable_tests=false --prefix ${EXTERNALPROJECT_BINARY_ROOT} /dav1d/install
45- COMMAND ${CMAKE_VS_MSBUILD_COMMAND} ${EXTERNALPROJECT_BINARY_ROOT} /dav1d/build_debug/dav1d.sln
46- COMMAND ${CMAKE_VS_MSBUILD_COMMAND} ${EXTERNALPROJECT_BINARY_ROOT} /dav1d/build_debug/RUN_INSTALL.vcxproj
47- COMMAND ${CMAKE_COMMAND} -E rename ${DAVID_LINK_DIRS} /libdav1d.a ${DAVID_LINK_DIRS} /libdav1d_deb.lib
48- COMMAND echo " -- Done"
49- WORKING_DIRECTORY ${SOURCE_DIR}
50- )
51-
52- ExternalProject_Add_Step (DAVID build_release
53- DEPENDEES build_debug
54- DEPENDERS build
55- COMMAND echo "Build Release"
56- COMMAND ${MESON_EXECUTABLE} setup ${EXTERNALPROJECT_BINARY_ROOT} /dav1d/build_release --backend vs2022 --buildtype release
57- --default-library static -Denable_tools=false -Denable_tests=false --prefix ${EXTERNALPROJECT_BINARY_ROOT} /dav1d/install
58- COMMAND ${CMAKE_VS_MSBUILD_COMMAND} ${EXTERNALPROJECT_BINARY_ROOT} /dav1d/build_release/dav1d.sln
59- COMMAND ${CMAKE_VS_MSBUILD_COMMAND} ${EXTERNALPROJECT_BINARY_ROOT} /dav1d/build_release/RUN_INSTALL.vcxproj
60- COMMAND ${CMAKE_COMMAND} -E rename ${DAVID_LINK_DIRS} /libdav1d.a ${DAVID_LINK_DIRS} /libdav1d_rel.lib
61- COMMAND echo " -- Done"
62- WORKING_DIRECTORY ${SOURCE_DIR}
63- )
64-
65- set (DAVID_LIBRARY libdav1d_rel)
66- set (DAVID_DEBUG_LIBRARY libdav1d_deb)
67-
68- elseif (UNIX )
69- set (CMAKE_BUILD_TYPE_FOR_STUPID_MESON "debug" )
70- if (CMAKE_BUILD_TYPE )
71- string (TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_FOR_STUPID_MESON)
72- endif ()
45+ ExternalProject_Get_Property (DAVID INSTALL_DIR )
7346
74- ExternalProject_Add_Step (DAVID build_unix
75- DEPENDEES configure
76- DEPENDERS build
77- COMMAND echo "Build Unix"
78- COMMAND ${MESON_EXECUTABLE} setup ${EXTERNALPROJECT_BINARY_ROOT} /dav1d/build_unix --backend ninja --buildtype ${CMAKE_BUILD_TYPE_FOR_STUPID_MESON}
79- --default-library static -Denable_tools=false -Denable_tests=false --prefix ${EXTERNALPROJECT_BINARY_ROOT} /dav1d/install --libdir=lib
80- COMMAND ${MESON_EXECUTABLE} compile -C ${EXTERNALPROJECT_BINARY_ROOT} /dav1d/build_unix
81- COMMAND ${MESON_EXECUTABLE} install -C ${EXTERNALPROJECT_BINARY_ROOT} /dav1d/build_unix
82- COMMAND echo " -- Done"
83- WORKING_DIRECTORY ${SOURCE_DIR}
47+ if (WIN32 )
48+ ExternalProject_Add_Step (DAVID rename_stupid_meson
49+ DEPENDEES install
50+ COMMAND ${CMAKE_COMMAND} -E rename ${INSTALL_DIR} /lib/libdav1d.a ${INSTALL_DIR} /lib/dav1d.lib
8451 )
52+ endif ()
8553
86- set (DAVID_LIBRARY dav1d)
8754
88- else ()
89- message (FATAL_ERROR "Unknown platform" )
90-
91- endif ()
9255
56+ set (DAVID_INCLUDE_DIRS ${INSTALL_DIR} /include)
57+ set (DAVID_LINK_DIRS ${INSTALL_DIR} /lib)
58+ set (DAVID_LIBRARY dav1d)
9359
9460set_property (TARGET DAVID PROPERTY FOLDER "Dependencies" )
9561
96- unset (SOURCE_DIR)
97- unset (BINARY_DIR)
62+ unset (INSTALL_DIR)
63+ unset (MESON_BACKEND)
64+ unset (MESON_BUILD_TYPE)
9865
0 commit comments