aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xT/CMakeLists.txt83
1 files changed, 61 insertions, 22 deletions
diff --git a/xT/CMakeLists.txt b/xT/CMakeLists.txt
index 0f9f26e..dd56c5c 100644
--- a/xT/CMakeLists.txt
+++ b/xT/CMakeLists.txt
@@ -50,7 +50,32 @@ foreach (icon xT xT-highlighted)
list (APPEND icon_rsrc_list "${icon_png}")
endforeach ()
-if (APPLE)
+function (android_mipmap_icon svg density size output_dir output)
+ set (_mipmap_dir "${output_dir}/res/mipmap-${density}")
+ set (_png "${_mipmap_dir}/ic_launcher.png")
+ set (${output} "${_png}" PARENT_SCOPE)
+
+ find_program (rsvg_convert_EXECUTABLE rsvg-convert REQUIRED)
+ add_custom_command (OUTPUT "${_png}"
+ COMMAND ${CMAKE_COMMAND} -E make_directory "${_mipmap_dir}"
+ COMMAND ${rsvg_convert_EXECUTABLE} "--output=${_png}"
+ "--width=${size}" "--height=${size}" -- "${svg}"
+ DEPENDS "${svg}"
+ COMMENT "Generating Android ${density} application icon" VERBATIM)
+endfunction ()
+
+if (ANDROID)
+ set (android_base "${PROJECT_BINARY_DIR}/android")
+ set (android_icon_list)
+ foreach (density_size
+ ldpi:36 mdpi:48 hdpi:72 xhdpi:96 xxhdpi:144 xxxhdpi:192)
+ string (REPLACE ":" ";" density_size "${density_size}")
+ android_mipmap_icon ("${PROJECT_SOURCE_DIR}/xT.svg"
+ ${density_size} "${android_base}" android_icon)
+ list (APPEND android_icon_list "${android_icon}")
+ endforeach ()
+ add_custom_target (android-icons ALL DEPENDS ${android_icon_list})
+elseif (APPLE)
set (MACOSX_BUNDLE_ICON_FILE xT.icns)
icon_to_icns ("${PROJECT_SOURCE_DIR}/xT.svg"
"${MACOSX_BUNDLE_ICON_FILE}" icon_icns)
@@ -96,29 +121,43 @@ add_custom_command (OUTPUT xC-proto.cpp
add_custom_target (xC-proto DEPENDS ${PROJECT_BINARY_DIR}/xC-proto.cpp)
list (APPEND project_sources "${root}/liberty/tools/lxdrgen-cpp-qt.cpp")
-qt_add_executable (xT
- xT.cpp ${project_config} ${project_sources} "${icon_icns}")
-add_dependencies (xT xC-proto)
-qt_add_resources (xT "rsrc" PREFIX / FILES "${beep}" ${icon_rsrc_list})
-target_link_libraries (xT PRIVATE Qt6::Widgets Qt6::Network Qt6::Multimedia)
-set_target_properties (xT PROPERTIES WIN32_EXECUTABLE ON MACOSX_BUNDLE ON
- MACOSX_BUNDLE_GUI_IDENTIFIER name.janouch.xT)
-# https://stackoverflow.com/questions/79079161 and resolved in Qt Creator 16.
-set (QT_QML_GENERATE_QMLLS_INI ON)
+# Qt Widgets is unusable on mobile, so just exclude it from there.
+if (NOT ANDROID)
+ qt_add_executable (xT
+ xT.cpp ${project_config} ${project_sources} "${icon_icns}")
+ add_dependencies (xT xC-proto)
+ qt_add_resources (xT "rsrc" PREFIX / FILES "${beep}" ${icon_rsrc_list})
+ target_link_libraries (xT PRIVATE Qt6::Widgets Qt6::Network Qt6::Multimedia)
+ set_target_properties (xT PROPERTIES
+ WIN32_EXECUTABLE ON
+ MACOSX_BUNDLE ON
+ MACOSX_BUNDLE_GUI_IDENTIFIER name.janouch.xT)
+endif ()
-# TODO(p): Perhaps do it in one-or-the-other way,
-# as Qt Quick sucks on the desktop, and Qt Widgets is unusable on mobile.
-qt_add_executable (xTq
- xTq.cpp ${project_config} ${project_sources} "${icon_icns}")
-set_property (SOURCE xTq.qml APPEND PROPERTY QT_QML_SOURCE_TYPENAME Main)
-qt_add_qml_module (xTq URI xTquick VERSION 1.0 QML_FILES xTq.qml)
-add_dependencies (xTq xC-proto)
-qt_add_resources (xTq "rsrc" PREFIX / FILES "${beep}" ${icon_rsrc_list})
-target_link_libraries (xTq PRIVATE
- Qt6::Quick Qt6::QuickControls2 Qt6::Network Qt6::Multimedia)
-set_target_properties (xTq PROPERTIES WIN32_EXECUTABLE ON MACOSX_BUNDLE ON
- MACOSX_BUNDLE_GUI_IDENTIFIER name.janouch.xTq)
+# Qt Quick makes for a degraded experience on the desktop.
+option (BUILD_XTQ "Build Qt Quick frontend (xTq)" ${ANDROID})
+if (BUILD_XTQ)
+ qt_add_executable (xTq
+ xTq.cpp ${project_config} ${project_sources} "${icon_icns}")
+ set_property (SOURCE xTq.qml APPEND PROPERTY QT_QML_SOURCE_TYPENAME Main)
+ qt_add_qml_module (xTq URI xTquick VERSION 1.0 QML_FILES xTq.qml)
+ add_dependencies (xTq xC-proto)
+ qt_add_resources (xTq "rsrc" PREFIX / FILES "${beep}" ${icon_rsrc_list})
+ target_link_libraries (xTq PRIVATE
+ Qt6::Quick Qt6::QuickControls2 Qt6::Network Qt6::Multimedia)
+ set_target_properties (xTq PROPERTIES
+ WIN32_EXECUTABLE ON
+ MACOSX_BUNDLE ON
+ MACOSX_BUNDLE_GUI_IDENTIFIER name.janouch.xTq
+ QT_ANDROID_PACKAGE_NAME name.janouch.xTq
+ QT_ANDROID_PACKAGE_SOURCE_DIR "${android_base}"
+ QT_ANDROID_APP_ICON "@mipmap/ic_launcher"
+ QT_ANDROID_APP_NAME xT)
+ if (ANDROID)
+ add_dependencies (xTq android-icons)
+ endif ()
+endif ()
# The files to be installed
include (GNUInstallDirs)