
When we landed the CMake minimum requirement constraint for Visual Studio 2019, we landed it with minimum version 3.15, since that's what was shipping with the current version of VS 2019 at the time. Looking at the release notes of earlier versions, it's clear that earlier versions of Visual Studio 2019 shipped with version 3.14. See: https://devblogs.microsoft.com/cppblog/visual-studio-cmake-support-clang-llvm-cmake-3-14-vcpkg-and-performance-improvements/ Looking at release notes for CMake 3.15, there are no features/fixes introduced in that version that we are dependent on. https://cmake.org/cmake/help/latest/release/3.15.html Issue: https://github.com/flutter/flutter/issues/88589
104 lines
3.4 KiB
CMake
104 lines
3.4 KiB
CMake
cmake_minimum_required(VERSION 3.14)
|
|
|
|
set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral")
|
|
|
|
# Configuration provided via flutter tool.
|
|
include(${EPHEMERAL_DIR}/generated_config.cmake)
|
|
|
|
# TODO: Move the rest of this into files in ephemeral. See
|
|
# https://github.com/flutter/flutter/issues/57146.
|
|
set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper")
|
|
|
|
# === Flutter Library ===
|
|
set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll")
|
|
|
|
# Published to parent scope for install step.
|
|
set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE)
|
|
set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE)
|
|
set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE)
|
|
set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE)
|
|
|
|
list(APPEND FLUTTER_LIBRARY_HEADERS
|
|
"flutter_export.h"
|
|
"flutter_windows.h"
|
|
"flutter_messenger.h"
|
|
"flutter_plugin_registrar.h"
|
|
"flutter_texture_registrar.h"
|
|
)
|
|
list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/")
|
|
add_library(flutter INTERFACE)
|
|
target_include_directories(flutter INTERFACE
|
|
"${EPHEMERAL_DIR}"
|
|
)
|
|
target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib")
|
|
add_dependencies(flutter flutter_assemble)
|
|
|
|
# === Wrapper ===
|
|
list(APPEND CPP_WRAPPER_SOURCES_CORE
|
|
"core_implementations.cc"
|
|
"standard_codec.cc"
|
|
)
|
|
list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/")
|
|
list(APPEND CPP_WRAPPER_SOURCES_PLUGIN
|
|
"plugin_registrar.cc"
|
|
)
|
|
list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/")
|
|
list(APPEND CPP_WRAPPER_SOURCES_APP
|
|
"flutter_engine.cc"
|
|
"flutter_view_controller.cc"
|
|
)
|
|
list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/")
|
|
|
|
# Wrapper sources needed for a plugin.
|
|
add_library(flutter_wrapper_plugin STATIC
|
|
${CPP_WRAPPER_SOURCES_CORE}
|
|
${CPP_WRAPPER_SOURCES_PLUGIN}
|
|
)
|
|
apply_standard_settings(flutter_wrapper_plugin)
|
|
set_target_properties(flutter_wrapper_plugin PROPERTIES
|
|
POSITION_INDEPENDENT_CODE ON)
|
|
set_target_properties(flutter_wrapper_plugin PROPERTIES
|
|
CXX_VISIBILITY_PRESET hidden)
|
|
target_link_libraries(flutter_wrapper_plugin PUBLIC flutter)
|
|
target_include_directories(flutter_wrapper_plugin PUBLIC
|
|
"${WRAPPER_ROOT}/include"
|
|
)
|
|
add_dependencies(flutter_wrapper_plugin flutter_assemble)
|
|
|
|
# Wrapper sources needed for the runner.
|
|
add_library(flutter_wrapper_app STATIC
|
|
${CPP_WRAPPER_SOURCES_CORE}
|
|
${CPP_WRAPPER_SOURCES_APP}
|
|
)
|
|
apply_standard_settings(flutter_wrapper_app)
|
|
target_link_libraries(flutter_wrapper_app PUBLIC flutter)
|
|
target_include_directories(flutter_wrapper_app PUBLIC
|
|
"${WRAPPER_ROOT}/include"
|
|
)
|
|
add_dependencies(flutter_wrapper_app flutter_assemble)
|
|
|
|
# === Flutter tool backend ===
|
|
# _phony_ is a non-existent file to force this command to run every time,
|
|
# since currently there's no way to get a full input/output list from the
|
|
# flutter tool.
|
|
set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_")
|
|
set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE)
|
|
add_custom_command(
|
|
OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS}
|
|
${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN}
|
|
${CPP_WRAPPER_SOURCES_APP}
|
|
${PHONY_OUTPUT}
|
|
COMMAND ${CMAKE_COMMAND} -E env
|
|
${FLUTTER_TOOL_ENVIRONMENT}
|
|
"${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat"
|
|
windows-x64 $<CONFIG>
|
|
VERBATIM
|
|
)
|
|
add_custom_target(flutter_assemble DEPENDS
|
|
"${FLUTTER_LIBRARY}"
|
|
${FLUTTER_LIBRARY_HEADERS}
|
|
${CPP_WRAPPER_SOURCES_CORE}
|
|
${CPP_WRAPPER_SOURCES_PLUGIN}
|
|
${CPP_WRAPPER_SOURCES_APP}
|
|
)
|