2022-05-23 16:25:55 +08:00
# Project-level configuration.
2022-09-27 16:48:04 +08:00
cmake_minimum_required ( VERSION 3.10 )
2022-05-23 16:25:55 +08:00
project ( runner LANGUAGES CXX )
# The name of the executable created for the application. Change this to change
# the on-disk name of your application.
2022-09-19 10:05:53 +08:00
set ( BINARY_NAME "rustdesk" )
2022-05-23 16:25:55 +08:00
# The unique GTK application identifier for this application. See:
# https://wiki.gnome.org/HowDoI/ChooseApplicationID
set ( APPLICATION_ID "com.carriez.flutter_hbb" )
2023-01-09 01:20:20 -05:00
# Explicitly opt into modern CMake behaviors to avoid warnings with recent
2022-05-23 16:25:55 +08:00
# versions of CMake.
cmake_policy ( SET CMP0063 NEW )
# Load bundled libraries from the lib/ directory relative to the binary.
set ( CMAKE_INSTALL_RPATH "$ORIGIN/lib" )
# Root filesystem for cross-building.
if ( FLUTTER_TARGET_PLATFORM_SYSROOT )
set ( CMAKE_SYSROOT ${ FLUTTER_TARGET_PLATFORM_SYSROOT } )
set ( CMAKE_FIND_ROOT_PATH ${ CMAKE_SYSROOT } )
set ( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )
set ( CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY )
set ( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )
set ( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )
endif ( )
# Define build configuration options.
if ( NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES )
set ( CMAKE_BUILD_TYPE "Debug" CACHE
S T R I N G " F l u t t e r b u i l d m o d e " F O R C E )
set_property ( CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
" D e b u g " " P r o f i l e " " R e l e a s e " )
endif ( )
# Compilation settings that should be applied to most targets.
#
# Be cautious about adding new options here, as plugins use this function by
# default. In most cases, you should add new options to specific targets instead
# of modifying this function.
function ( APPLY_STANDARD_SETTINGS TARGET )
target_compile_features ( ${ TARGET } PUBLIC cxx_std_14 )
target_compile_options ( ${ TARGET } PRIVATE -Wall -Werror )
target_compile_options ( ${ TARGET } PRIVATE "$<$<NOT:$<CONFIG:Debug>>:-O3>" )
target_compile_definitions ( ${ TARGET } PRIVATE "$<$<NOT:$<CONFIG:Debug>>:NDEBUG>" )
endfunction ( )
# Flutter library and tool build rules.
set ( FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter" )
add_subdirectory ( ${ FLUTTER_MANAGED_DIR } )
# System-level dependencies.
find_package ( PkgConfig REQUIRED )
pkg_check_modules ( GTK REQUIRED IMPORTED_TARGET gtk+-3.0 )
add_definitions ( -DAPPLICATION_ID= "${APPLICATION_ID}" )
# Define the application target. To change its name, change BINARY_NAME above,
# not the value here, or `flutter run` will no longer work.
#
# Any new source files that you add to the application should be added here.
add_executable ( ${ BINARY_NAME }
" m a i n . c c "
" m y _ a p p l i c a t i o n . c c "
" $ { F L U T T E R _ M A N A G E D _ D I R } / g e n e r a t e d _ p l u g i n _ r e g i s t r a n t . c c "
)
# Apply the standard set of build settings. This can be removed for applications
# that need different build settings.
apply_standard_settings ( ${ BINARY_NAME } )
# Add dependency libraries. Add any application-specific dependencies here.
target_link_libraries ( ${ BINARY_NAME } PRIVATE flutter )
target_link_libraries ( ${ BINARY_NAME } PRIVATE PkgConfig::GTK )
2022-09-12 15:05:04 +08:00
target_link_libraries ( ${ BINARY_NAME } PRIVATE ${ CMAKE_DL_LIBS } )
2022-08-24 17:10:34 -07:00
# target_link_libraries(${BINARY_NAME} PRIVATE librustdesk)
2022-05-24 09:32:40 +08:00
2022-05-23 16:25:55 +08:00
# Run the Flutter tool portions of the build. This must not be removed.
add_dependencies ( ${ BINARY_NAME } flutter_assemble )
# Only the install-generated bundle's copy of the executable will launch
# correctly, since the resources must in the right relative locations. To avoid
# people trying to run the unbundled copy, put it in a subdirectory instead of
# the default top-level location.
set_target_properties ( ${ BINARY_NAME }
P R O P E R T I E S
R U N T I M E _ O U T P U T _ D I R E C T O R Y " $ { C M A K E _ B I N A R Y _ D I R } / i n t e r m e d i a t e s _ d o _ n o t _ r u n "
)
# Generated plugin build rules, which manage building the plugins and adding
# them to the application.
include ( flutter/generated_plugins.cmake )
# === Installation ===
# By default, "installing" just makes a relocatable bundle in the build
# directory.
set ( BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle" )
2022-08-03 22:03:31 +08:00
#if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
2022-05-23 16:25:55 +08:00
set ( CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE )
2022-08-03 22:03:31 +08:00
#endif()
2022-05-23 16:25:55 +08:00
# Start with a clean build bundle directory every time.
install ( CODE "
file ( REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\")
" C O M P O N E N T R u n t i m e )
set ( INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data" )
set ( INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib" )
install ( TARGETS ${ BINARY_NAME } RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}"
C O M P O N E N T R u n t i m e )
install ( FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}"
C O M P O N E N T R u n t i m e )
install ( FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
C O M P O N E N T R u n t i m e )
foreach ( bundled_library ${ PLUGIN_BUNDLED_LIBRARIES } )
install ( FILES "${bundled_library}"
D E S T I N A T I O N " $ { I N S T A L L _ B U N D L E _ L I B _ D I R } "
C O M P O N E N T R u n t i m e )
endforeach ( bundled_library )
2022-09-12 15:05:04 +08:00
# flutter_rust_bridge
2022-09-12 18:04:00 +08:00
set ( RUSTDESK_LIB_BUILD_TYPE $< IF:$<CONFIG:Debug > ,debug,release> )
2022-09-12 15:05:04 +08:00
string ( TOLOWER ${ CMAKE_BUILD_TYPE } ${ RUSTDESK_LIB_BUILD_TYPE } )
message ( STATUS "rustdesk lib build type: ${RUSTDESK_LIB_BUILD_TYPE}" )
set ( RUSTDESK_LIB "../../target/${RUSTDESK_LIB_BUILD_TYPE}/liblibrustdesk.so" )
install ( FILES "${RUSTDESK_LIB}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
C O M P O N E N T R u n t i m e R E N A M E l i b r u s t d e s k . s o )
2022-08-24 17:10:34 -07:00
2022-05-23 16:25:55 +08:00
# Fully re-copy the assets directory on each build to avoid having stale files
# from a previous install.
set ( FLUTTER_ASSET_DIR_NAME "flutter_assets" )
install ( CODE "
file ( REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\")
" C O M P O N E N T R u n t i m e )
install ( DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}"
D E S T I N A T I O N " $ { I N S T A L L _ B U N D L E _ D A T A _ D I R } " C O M P O N E N T R u n t i m e )
# Install the AOT library on non-Debug builds only.
if ( NOT CMAKE_BUILD_TYPE MATCHES "Debug" )
install ( FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
C O M P O N E N T R u n t i m e )
endif ( )