languages

A collection of programs made with different programming languages.
git clone git://evanalba.com/languages
Log | Files | Refs

CMakeLists.txt (5423B)


      1 # Project-level configuration.
      2 cmake_minimum_required(VERSION 3.10)
      3 project(runner LANGUAGES CXX)
      4 
      5 # The name of the executable created for the application. Change this to change
      6 # the on-disk name of your application.
      7 set(BINARY_NAME "penny")
      8 # The unique GTK application identifier for this application. See:
      9 # https://wiki.gnome.org/HowDoI/ChooseApplicationID
     10 set(APPLICATION_ID "com.example.penny")
     11 
     12 # Explicitly opt in to modern CMake behaviors to avoid warnings with recent
     13 # versions of CMake.
     14 cmake_policy(SET CMP0063 NEW)
     15 
     16 # Load bundled libraries from the lib/ directory relative to the binary.
     17 set(CMAKE_INSTALL_RPATH "$ORIGIN/lib")
     18 
     19 # Root filesystem for cross-building.
     20 if(FLUTTER_TARGET_PLATFORM_SYSROOT)
     21   set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT})
     22   set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT})
     23   set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
     24   set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
     25   set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
     26   set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
     27 endif()
     28 
     29 # Define build configuration options.
     30 if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
     31   set(CMAKE_BUILD_TYPE "Debug" CACHE
     32     STRING "Flutter build mode" FORCE)
     33   set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
     34     "Debug" "Profile" "Release")
     35 endif()
     36 
     37 # Compilation settings that should be applied to most targets.
     38 #
     39 # Be cautious about adding new options here, as plugins use this function by
     40 # default. In most cases, you should add new options to specific targets instead
     41 # of modifying this function.
     42 function(APPLY_STANDARD_SETTINGS TARGET)
     43   target_compile_features(${TARGET} PUBLIC cxx_std_14)
     44   target_compile_options(${TARGET} PRIVATE -Wall -Werror)
     45   target_compile_options(${TARGET} PRIVATE "$<$<NOT:$<CONFIG:Debug>>:-O3>")
     46   target_compile_definitions(${TARGET} PRIVATE "$<$<NOT:$<CONFIG:Debug>>:NDEBUG>")
     47 endfunction()
     48 
     49 # Flutter library and tool build rules.
     50 set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter")
     51 add_subdirectory(${FLUTTER_MANAGED_DIR})
     52 
     53 # System-level dependencies.
     54 find_package(PkgConfig REQUIRED)
     55 pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)
     56 
     57 add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}")
     58 
     59 # Define the application target. To change its name, change BINARY_NAME above,
     60 # not the value here, or `flutter run` will no longer work.
     61 #
     62 # Any new source files that you add to the application should be added here.
     63 add_executable(${BINARY_NAME}
     64   "main.cc"
     65   "my_application.cc"
     66   "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc"
     67 )
     68 
     69 # Apply the standard set of build settings. This can be removed for applications
     70 # that need different build settings.
     71 apply_standard_settings(${BINARY_NAME})
     72 
     73 # Add dependency libraries. Add any application-specific dependencies here.
     74 target_link_libraries(${BINARY_NAME} PRIVATE flutter)
     75 target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK)
     76 
     77 # Run the Flutter tool portions of the build. This must not be removed.
     78 add_dependencies(${BINARY_NAME} flutter_assemble)
     79 
     80 # Only the install-generated bundle's copy of the executable will launch
     81 # correctly, since the resources must in the right relative locations. To avoid
     82 # people trying to run the unbundled copy, put it in a subdirectory instead of
     83 # the default top-level location.
     84 set_target_properties(${BINARY_NAME}
     85   PROPERTIES
     86   RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run"
     87 )
     88 
     89 
     90 # Generated plugin build rules, which manage building the plugins and adding
     91 # them to the application.
     92 include(flutter/generated_plugins.cmake)
     93 
     94 
     95 # === Installation ===
     96 # By default, "installing" just makes a relocatable bundle in the build
     97 # directory.
     98 set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle")
     99 if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
    100   set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE)
    101 endif()
    102 
    103 # Start with a clean build bundle directory every time.
    104 install(CODE "
    105   file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\")
    106   " COMPONENT Runtime)
    107 
    108 set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data")
    109 set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib")
    110 
    111 install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}"
    112   COMPONENT Runtime)
    113 
    114 install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}"
    115   COMPONENT Runtime)
    116 
    117 install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
    118   COMPONENT Runtime)
    119 
    120 foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES})
    121   install(FILES "${bundled_library}"
    122     DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
    123     COMPONENT Runtime)
    124 endforeach(bundled_library)
    125 
    126 # Copy the native assets provided by the build.dart from all packages.
    127 set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/linux/")
    128 install(DIRECTORY "${NATIVE_ASSETS_DIR}"
    129    DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
    130    COMPONENT Runtime)
    131 
    132 # Fully re-copy the assets directory on each build to avoid having stale files
    133 # from a previous install.
    134 set(FLUTTER_ASSET_DIR_NAME "flutter_assets")
    135 install(CODE "
    136   file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\")
    137   " COMPONENT Runtime)
    138 install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}"
    139   DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime)
    140 
    141 # Install the AOT library on non-Debug builds only.
    142 if(NOT CMAKE_BUILD_TYPE MATCHES "Debug")
    143   install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
    144     COMPONENT Runtime)
    145 endif()