CMakeLists.txt 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319
  1. # This file is part of Desktop App Toolkit,
  2. # a set of libraries for developing nice desktop applications.
  3. #
  4. # For license and copyright information please follow this link:
  5. # https://github.com/desktop-app/legal/blob/master/LEGAL
  6. add_library(lib_base STATIC)
  7. add_library(desktop-app::lib_base ALIAS lib_base)
  8. init_target(lib_base)
  9. add_library(lib_base_crash_report_writer STATIC)
  10. add_library(desktop-app::lib_base_crash_report_writer ALIAS lib_base_crash_report_writer)
  11. init_target(lib_base_crash_report_writer)
  12. get_filename_component(src_loc . REALPATH)
  13. target_precompile_headers(lib_base PRIVATE $<$<COMPILE_LANGUAGE:CXX,OBJCXX>:${src_loc}/base/base_pch.h>)
  14. nice_target_sources(lib_base ${src_loc}
  15. PRIVATE
  16. base/platform/linux/base_battery_saving_linux.cpp
  17. base/platform/linux/base_battery_saving_linux.h
  18. base/platform/linux/base_file_utilities_linux.cpp
  19. base/platform/linux/base_file_utilities_linux.h
  20. base/platform/linux/base_global_shortcuts_linux.cpp
  21. base/platform/linux/base_global_shortcuts_linux.h
  22. base/platform/linux/base_haptic_linux.cpp
  23. base/platform/linux/base_haptic_linux.h
  24. base/platform/linux/base_info_linux.cpp
  25. base/platform/linux/base_info_linux.h
  26. base/platform/linux/base_last_input_linux.cpp
  27. base/platform/linux/base_last_input_linux.h
  28. base/platform/linux/base_layout_switch_linux.cpp
  29. base/platform/linux/base_layout_switch_linux.h
  30. base/platform/linux/base_linux_allocation_tracer.cpp
  31. base/platform/linux/base_linux_allocation_tracer.h
  32. base/platform/linux/base_linux_dbus_utilities.cpp
  33. base/platform/linux/base_linux_dbus_utilities.h
  34. base/platform/linux/base_linux_library.cpp
  35. base/platform/linux/base_linux_library.h
  36. base/platform/linux/base_linux_xcb_utilities.cpp
  37. base/platform/linux/base_linux_xcb_utilities.h
  38. base/platform/linux/base_linux_xdg_activation_token.cpp
  39. base/platform/linux/base_linux_xdg_activation_token.h
  40. base/platform/linux/base_linux_xdp_utilities.cpp
  41. base/platform/linux/base_linux_xdp_utilities.h
  42. base/platform/linux/base_linux_xsettings.cpp
  43. base/platform/linux/base_linux_xsettings.h
  44. base/platform/linux/base_network_reachability_linux.cpp
  45. base/platform/linux/base_power_save_blocker_linux.cpp
  46. base/platform/linux/base_power_save_blocker_linux.h
  47. base/platform/linux/base_process_linux.cpp
  48. base/platform/linux/base_process_linux.h
  49. base/platform/linux/base_system_media_controls_linux.cpp
  50. base/platform/linux/base_system_unlock_linux.cpp
  51. base/platform/linux/base_system_unlock_linux.h
  52. base/platform/linux/base_url_scheme_linux.cpp
  53. base/platform/linux/base_url_scheme_linux.h
  54. base/platform/mac/base_battery_saving_mac.mm
  55. base/platform/mac/base_battery_saving_mac.h
  56. base/platform/mac/base_confirm_quit.h
  57. base/platform/mac/base_confirm_quit.mm
  58. base/platform/mac/base_custom_app_icon_mac.h
  59. base/platform/mac/base_custom_app_icon_mac.mm
  60. base/platform/mac/base_file_utilities_mac.h
  61. base/platform/mac/base_file_utilities_mac.mm
  62. base/platform/mac/base_global_shortcuts_mac.mm
  63. base/platform/mac/base_global_shortcuts_mac.h
  64. base/platform/mac/base_haptic_mac.h
  65. base/platform/mac/base_haptic_mac.mm
  66. base/platform/mac/base_info_mac.h
  67. base/platform/mac/base_info_mac.mm
  68. base/platform/mac/base_last_input_mac.h
  69. base/platform/mac/base_last_input_mac.mm
  70. base/platform/mac/base_layout_switch_mac.h
  71. base/platform/mac/base_layout_switch_mac.mm
  72. base/platform/mac/base_network_reachability_mac.mm
  73. base/platform/mac/base_power_save_blocker_mac.h
  74. base/platform/mac/base_power_save_blocker_mac.mm
  75. base/platform/mac/base_process_mac.h
  76. base/platform/mac/base_process_mac.mm
  77. base/platform/mac/base_system_media_controls_mac.mm
  78. base/platform/mac/base_system_unlock_mac.h
  79. base/platform/mac/base_system_unlock_mac.mm
  80. base/platform/mac/base_url_scheme_mac.h
  81. base/platform/mac/base_url_scheme_mac.mm
  82. base/platform/mac/base_utilities_mac.h
  83. base/platform/mac/base_utilities_mac.mm
  84. base/platform/win/base_battery_saving_win.cpp
  85. base/platform/win/base_battery_saving_win.h
  86. base/platform/win/base_file_utilities_win.cpp
  87. base/platform/win/base_file_utilities_win.h
  88. base/platform/win/base_global_shortcuts_win.cpp
  89. base/platform/win/base_global_shortcuts_win.h
  90. base/platform/win/base_haptic_win.cpp
  91. base/platform/win/base_haptic_win.h
  92. base/platform/win/base_info_win.cpp
  93. base/platform/win/base_info_win.h
  94. base/platform/win/base_last_input_win.cpp
  95. base/platform/win/base_last_input_win.h
  96. base/platform/win/base_layout_switch_win.cpp
  97. base/platform/win/base_layout_switch_win.h
  98. base/platform/win/base_network_reachability_win.cpp
  99. base/platform/win/base_power_save_blocker_win.cpp
  100. base/platform/win/base_power_save_blocker_win.h
  101. base/platform/win/base_process_win.cpp
  102. base/platform/win/base_process_win.h
  103. base/platform/win/base_system_media_controls_win.cpp
  104. base/platform/win/base_system_unlock_win.cpp
  105. base/platform/win/base_system_unlock_win.h
  106. base/platform/win/base_url_scheme_win.cpp
  107. base/platform/win/base_url_scheme_win.h
  108. base/platform/win/base_windows_co_task_mem.h
  109. base/platform/win/base_windows_gdiplus_h.h
  110. base/platform/win/base_windows_rpcndr_h.h
  111. base/platform/win/base_windows_safe_library.cpp
  112. base/platform/win/base_windows_safe_library.h
  113. base/platform/win/base_windows_shlobj_h.h
  114. base/platform/win/base_windows_winrt.cpp
  115. base/platform/win/base_windows_winrt.h
  116. base/platform/win/base_windows_wrl.cpp
  117. base/platform/win/base_windows_wrl.h
  118. base/platform/win/wrl/wrl_implements_h.h
  119. base/platform/win/wrl/wrl_module_h.h
  120. base/platform/base_platform_custom_app_icon.h
  121. base/platform/base_platform_global_shortcuts.h
  122. base/platform/base_platform_haptic.h
  123. base/platform/base_platform_info.cpp
  124. base/platform/base_platform_info.h
  125. base/platform/base_platform_last_input.h
  126. base/platform/base_platform_layout_switch.h
  127. base/platform/base_platform_network_reachability.h
  128. base/platform/base_platform_file_utilities.h
  129. base/platform/base_platform_power_save_blocker.h
  130. base/platform/base_platform_process.h
  131. base/platform/base_platform_url_scheme.h
  132. base/platform/base_platform_system_media_controls.h
  133. base/algorithm.cpp
  134. base/algorithm.h
  135. base/assertion.cpp
  136. base/assertion.h
  137. base/atomic.h
  138. base/base_file_utilities.cpp
  139. base/base_file_utilities.h
  140. base/basic_types.h
  141. base/battery_saving.cpp
  142. base/battery_saving.h
  143. base/binary_guard.h
  144. base/build_config.h
  145. base/bytes.cpp
  146. base/bytes.h
  147. base/call_delayed.cpp
  148. base/call_delayed.h
  149. base/crc32hash.cpp
  150. base/crc32hash.h
  151. base/concurrent_timer.cpp
  152. base/concurrent_timer.h
  153. base/const_string.h
  154. base/custom_app_icon.h
  155. base/custom_delete.h
  156. base/debug_destroy_informer.h
  157. base/debug_log.cpp
  158. base/debug_log.h
  159. base/enum_mask.h
  160. base/event_filter.cpp
  161. base/event_filter.h
  162. base/expected.h
  163. base/file_lock.h
  164. base/file_lock_win.cpp
  165. base/file_lock_posix.cpp
  166. base/flags.h
  167. base/flat_map.h
  168. base/flat_set.h
  169. base/functors.h
  170. base/global_shortcuts.h
  171. base/global_shortcuts_generic.cpp
  172. base/global_shortcuts_generic.h
  173. base/index_based_iterator.h
  174. base/integration.cpp
  175. base/integration.h
  176. base/invoke_queued.h
  177. base/last_used_cache.h
  178. base/last_user_input.cpp
  179. base/last_user_input.h
  180. base/match_method.h
  181. base/network_reachability.cpp
  182. base/network_reachability.h
  183. base/never_freed_pointer.h
  184. base/object_ptr.h
  185. base/ordered_set.h
  186. base/openssl_help.h
  187. base/optional.h
  188. base/options.cpp
  189. base/options.h
  190. base/overload.h
  191. base/parse_helper.cpp
  192. base/parse_helper.h
  193. base/power_save_blocker.cpp
  194. base/power_save_blocker.h
  195. base/qthelp_regex.h
  196. base/qthelp_url.cpp
  197. base/qthelp_url.h
  198. base/qt_connection.h
  199. base/qt_signal_producer.h
  200. base/random.cpp
  201. base/random.h
  202. base/required.h
  203. base/runtime_composer.cpp
  204. base/runtime_composer.h
  205. base/single_instance.cpp
  206. base/single_instance.h
  207. base/system_unlock.h
  208. base/thread_safe_wrap.h
  209. base/timer.cpp
  210. base/timer.h
  211. base/timer_rpl.h
  212. base/type_traits.h
  213. base/unique_any.h
  214. base/unique_function.h
  215. base/unique_qptr.h
  216. base/unixtime.cpp
  217. base/unixtime.h
  218. base/variant.h
  219. base/virtual_method.h
  220. base/weak_ptr.h
  221. base/zlib_help.h
  222. base/qt/qt_common_adapters.h
  223. base/qt/qt_compare.h
  224. base/qt/qt_key_modifiers.h
  225. base/qt/qt_string_view.h
  226. base/qt/qt_tab_key.cpp
  227. base/qt/qt_tab_key.h
  228. base/base_pch.h
  229. )
  230. if (DESKTOP_APP_DISABLE_X11_INTEGRATION)
  231. remove_target_sources(lib_base ${src_loc}
  232. base/platform/linux/base_linux_xcb_utilities.cpp
  233. base/platform/linux/base_linux_xcb_utilities.h
  234. base/platform/linux/base_linux_xsettings.cpp
  235. base/platform/linux/base_linux_xsettings.h
  236. )
  237. endif()
  238. target_include_directories(lib_base
  239. PUBLIC
  240. ${src_loc}
  241. )
  242. target_link_libraries(lib_base
  243. PUBLIC
  244. desktop-app::lib_rpl
  245. desktop-app::lib_crl
  246. desktop-app::external_qt
  247. desktop-app::external_openssl
  248. desktop-app::external_crash_reports
  249. desktop-app::external_ranges
  250. desktop-app::external_gsl
  251. desktop-app::external_expected
  252. PRIVATE
  253. desktop-app::external_xxhash
  254. )
  255. if (WIN32)
  256. nuget_add_winrt(lib_base)
  257. elseif (LINUX)
  258. target_link_libraries(lib_base
  259. PUBLIC
  260. desktop-app::external_kcoreaddons
  261. )
  262. include(${cmake_helpers_loc}/external/glib/generate_dbus.cmake)
  263. generate_dbus(lib_base org.freedesktop. XdgDBus ${src_loc}/base/platform/linux/org.freedesktop.DBus.xml)
  264. generate_dbus(lib_base org.freedesktop.portal. XdpInhibit ${third_party_loc}/xdg-desktop-portal/data/org.freedesktop.portal.Inhibit.xml)
  265. generate_dbus(lib_base org.freedesktop.portal. XdpOpenURI ${third_party_loc}/xdg-desktop-portal/data/org.freedesktop.portal.OpenURI.xml)
  266. generate_dbus(lib_base org.freedesktop.portal. XdpRequest ${third_party_loc}/xdg-desktop-portal/data/org.freedesktop.portal.Request.xml)
  267. generate_dbus(lib_base org.freedesktop.portal. XdpSettings ${third_party_loc}/xdg-desktop-portal/data/org.freedesktop.portal.Settings.xml)
  268. generate_dbus(lib_base org.freedesktop. XdgFileManager1 ${src_loc}/base/platform/linux/org.freedesktop.FileManager1.xml)
  269. generate_dbus(lib_base org.gnome.Mutter. MutterIdleMonitor ${src_loc}/base/platform/linux/org.gnome.Mutter.IdleMonitor.xml)
  270. generate_dbus(lib_base org.sigxcpu.Feedback. SigxcpuFeedback ${src_loc}/base/platform/linux/org.sigxcpu.Feedback.Haptic.xml)
  271. generate_dbus(lib_base org.mpris. Mpris ${src_loc}/base/platform/linux/mpris.xml)
  272. generate_dbus(lib_base io.snapcraft. Snapcraft ${src_loc}/base/platform/linux/io.snapcraft.Settings.xml)
  273. if (NOT DESKTOP_APP_DISABLE_X11_INTEGRATION)
  274. target_link_libraries(lib_base
  275. PUBLIC
  276. desktop-app::external_xcb_keysyms
  277. desktop-app::external_xcb_record
  278. desktop-app::external_xcb_screensaver
  279. desktop-app::external_xcb
  280. )
  281. endif()
  282. endif()
  283. if (DESKTOP_APP_USE_ALLOCATION_TRACER)
  284. target_compile_definitions(lib_base
  285. PRIVATE
  286. DESKTOP_APP_USE_ALLOCATION_TRACER
  287. )
  288. endif()
  289. #target_precompile_headers(lib_base_crash_report_writer REUSE_FROM lib_base)
  290. target_precompile_headers(lib_base_crash_report_writer PRIVATE ${src_loc}/base/base_pch.h)
  291. nice_target_sources(lib_base_crash_report_writer ${src_loc}
  292. PRIVATE
  293. base/crash_report_header.cpp
  294. base/crash_report_header.h
  295. base/crash_report_writer.cpp
  296. base/crash_report_writer.h
  297. )
  298. if (DESKTOP_APP_DISABLE_CRASH_REPORTS)
  299. remove_target_sources(lib_base_crash_report_writer ${src_loc}
  300. base/crash_report_writer.cpp
  301. base/crash_report_writer.h
  302. )
  303. endif()
  304. target_link_libraries(lib_base_crash_report_writer PUBLIC desktop-app::lib_base)