Warning, /sdk/rust-qt-binding-generator/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
0002
0003 project (rust_qt_binding_generator)
0004
0005 set(QT_MIN_VERSION "5.6.0")
0006 set(KF5_MIN_VERSION "5.2.0")
0007
0008 LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
0009 find_package(ECM 1.0.0 NO_MODULE)
0010 if (ECM_FOUND)
0011 LIST(APPEND CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
0012 include(KDEInstallDirs)
0013 include(KDECMakeSettings)
0014 include(KDECompilerSettings NO_POLICY_SCOPE)
0015 include(ECMPoQmTools)
0016 else()
0017 cmake_policy(SET CMP0063 NEW)
0018 cmake_policy(SET CMP0071 NEW)
0019 enable_testing()
0020 set(CMAKE_AUTOMOC ON)
0021 endif()
0022
0023 set(CMAKE_AUTOUIC ON)
0024
0025 include(FeatureSummary)
0026
0027 find_package(Cargo REQUIRED)
0028 find_package(Rust REQUIRED)
0029 set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
0030 find_package(Threads REQUIRED)
0031
0032 # Runtime information library -- dl on Debian, execinfo on FreeBSD.
0033 # This quiets a warning from rustc about linking to native artifacts.
0034 if (CMAKE_SYSTEM MATCHES "FreeBSD")
0035 set(NEED_DL_LIBRARY true)
0036 find_library(DL_LIBRARY execinfo)
0037 elseif (DEFINED CMAKE_DL_LIBS)
0038 set(NEED_DL_LIBRARY true)
0039 find_library(DL_LIBRARY ${CMAKE_DL_LIBS})
0040 endif()
0041
0042 # It would be neater to use set_package_properties() here and to
0043 # rely on feature_summary(), below, but that entails using find_package()
0044 # and moving this whole thing into a Find-module, which is over-wrought.
0045 if (NEED_DL_LIBRARY AND NOT DL_LIBRARY)
0046 message(FATAL_ERROR "No runtime information library (-ldl or -lexecinfo)")
0047 endif()
0048
0049 # Find Qt modules
0050 find_package(Qt5 ${QT_MIN_VERSION} CONFIG
0051 REQUIRED COMPONENTS
0052 Core
0053 Test
0054 OPTIONAL_COMPONENTS
0055 Widgets
0056 Svg
0057 Quick
0058 )
0059 find_package(Qt5QuickControls2 EXACT ${Qt5Core_VERSION})
0060 find_package(Qt5Charts EXACT ${Qt5Core_VERSION})
0061
0062 find_package(KF5Kirigami2)
0063
0064 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
0065
0066 string(TOUPPER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_UPPER)
0067 if(CMAKE_BUILD_TYPE_UPPER STREQUAL DEBUG)
0068 set(RUST_TARGET_DIR target/debug/)
0069 set(RUST_BUILD_FLAG)
0070 else()
0071 set(RUST_TARGET_DIR target/release/)
0072 set(RUST_BUILD_FLAG --release)
0073 endif()
0074
0075 set(RustQtBindingGenerator_EXECUTABLE "${CMAKE_CURRENT_SOURCE_DIR}/${RUST_TARGET_DIR}rust_qt_binding_generator")
0076 add_custom_command(
0077 OUTPUT "${RustQtBindingGenerator_EXECUTABLE}"
0078 COMMAND ${Cargo_EXECUTABLE} build ${RUST_BUILD_FLAG}
0079 DEPENDS src/lib.rs
0080 src/configuration.rs
0081 src/cpp.rs
0082 src/rust.rs
0083 src/util.rs
0084 src/bin/rust_qt_binding_generator.rs
0085 WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
0086 )
0087 add_custom_target(rust_qt_binding_generator DEPENDS "${RustQtBindingGenerator_EXECUTABLE}")
0088
0089 add_subdirectory(tests)
0090
0091 if(Qt5Widgets_FOUND AND Qt5Svg_FOUND)
0092 add_subdirectory(demo)
0093 endif()
0094
0095 if (ECM_FOUND)
0096 install(FILES org.kde.rust_qt_binding_generator.appdata.xml
0097 DESTINATION ${KDE_INSTALL_METAINFODIR})
0098 endif()