| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 | 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})
 |