summaryrefslogtreecommitdiffstats
path: root/src/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'src/CMakeLists.txt')
-rw-r--r--src/CMakeLists.txt282
1 files changed, 282 insertions, 0 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
new file mode 100644
index 0000000..9a0627c
--- /dev/null
+++ b/src/CMakeLists.txt
@@ -0,0 +1,282 @@
+# src/remmina - The GTK+ Remote Desktop Client
+#
+# Copyright (C) 2011 Marc-Andre Moreau
+# Copyright (C) 2014-2015 Antenore Gatta, Fabio Castelli, Giovanni Panozzo
+# Copyright (C) 2016-2023 Antenore Gatta, Giovanni Panozzo
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
+# Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# In addition, as a special exception, the copyright holders give permission to
+# link the code of portions of this program with the OpenSSL library under
+# certain conditions as described in each individual source file, and distribute
+# linked combinations including the two. You must obey the GNU General Public
+# License in all respects for all of the code used other than OpenSSL. If you
+# modify file(s) with this exception, you may extend this exception to your
+# version of the file(s), but you are not obligated to do so. If you do not wish
+# to do so, delete this exception statement from your version. If you delete
+# this exception statement from all source files in the program, then also
+# delete it here.
+
+list(
+ APPEND
+ REMMINA_SRCS
+ "remmina_about.c"
+ "remmina_about.h"
+ "remmina_applet_menu.c"
+ "remmina_applet_menu.h"
+ "remmina_applet_menu_item.c"
+ "remmina_applet_menu_item.h"
+ "remmina_avahi.c"
+ "remmina_avahi.h"
+ "remmina.c"
+ "remmina.h"
+ "remmina_bug_report.c"
+ "remmina_bug_report.h"
+ "remmina_chat_window.c"
+ "remmina_chat_window.h"
+ "remmina_crypt.c"
+ "remmina_crypt.h"
+ "remmina_exec.c"
+ "remmina_exec.h"
+ "remmina_file.c"
+ "remmina_file_editor.c"
+ "remmina_file_editor.h"
+ "remmina_file.h"
+ "remmina_file_manager.c"
+ "remmina_file_manager.h"
+ "remmina_ftp_client.c"
+ "remmina_ftp_client.h"
+ "remmina_icon.c"
+ "remmina_icon.h"
+ "remmina_key_chooser.c"
+ "remmina_key_chooser.h"
+ "remmina_log.c"
+ "remmina_log.h"
+ "remmina_main.c"
+ "remmina_main.h"
+ "remmina_monitor.c"
+ "remmina_monitor.h"
+ "remmina_marshals.c"
+ "remmina_marshals.h"
+ "remmina_marshals.list"
+ "remmina_masterthread_exec.c"
+ "remmina_masterthread_exec.h"
+ "remmina_message_panel.c"
+ "remmina_message_panel.h"
+ "remmina_plugin_manager.c"
+ "remmina_plugin_manager.h"
+ "remmina_plugin_native.c"
+ "remmina_plugin_native.h"
+ "remmina_ext_exec.c"
+ "remmina_ext_exec.h"
+ "remmina_passwd.c"
+ "remmina_passwd.h"
+ "remmina_pref.c"
+ "remmina_pref_dialog.c"
+ "remmina_pref_dialog.h"
+ "remmina_pref.h"
+ "remmina_protocol_widget.c"
+ "remmina_protocol_widget.h"
+ "remmina_public.c"
+ "remmina_public.h"
+ "remmina_scrolled_viewport.c"
+ "remmina_scrolled_viewport.h"
+ "remmina_sftp_client.c"
+ "remmina_sftp_client.h"
+ "remmina_sftp_plugin.c"
+ "remmina_sftp_plugin.h"
+ "remmina_sodium.c"
+ "remmina_sodium.h"
+ "remmina_curl_connector.c"
+ "remmina_curl_connector.h"
+ "remmina_ssh.c"
+ "remmina_ssh.h"
+ "remmina_ssh_plugin.c"
+ "remmina_ssh_plugin.h"
+ "remmina_string_array.c"
+ "remmina_string_array.h"
+ "remmina_string_list.c"
+ "remmina_string_list.h"
+ "remmina_unlock.c"
+ "remmina_unlock.h"
+ "remmina_utils.c"
+ "remmina_utils.h"
+ "remmina_widget_pool.c"
+ "remmina_widget_pool.h"
+ "remmina_external_tools.c"
+ "remmina_external_tools.h"
+ "remmina_sysinfo.h"
+ "remmina_sysinfo.c"
+ "rcw.c"
+ "rcw.h"
+ "remmina_mpchange.c"
+ "remmina_mpchange.h"
+ "remmina_scheduler.c"
+ "remmina_scheduler.h"
+ "remmina_info.c"
+ "remmina_info.h"
+ "resources.c")
+
+set(RESOURCE_LIST
+ ${CMAKE_CURRENT_SOURCE_DIR}/../data/ui/remmina_about.glade
+ ${CMAKE_CURRENT_SOURCE_DIR}/../data/ui/remmina_bug_report.glade
+ ${CMAKE_CURRENT_SOURCE_DIR}/../data/ui/remmina_key_chooser.glade
+ ${CMAKE_CURRENT_SOURCE_DIR}/../data/ui/remmina_main.glade
+ ${CMAKE_CURRENT_SOURCE_DIR}/../data/ui/remmina_mpc.glade
+ ${CMAKE_CURRENT_SOURCE_DIR}/../data/ui/remmina_info.glade
+ ${CMAKE_CURRENT_SOURCE_DIR}/../data/ui/remmina_passwd.glade
+ ${CMAKE_CURRENT_SOURCE_DIR}/../data/ui/remmina_preferences.glade
+ ${CMAKE_CURRENT_SOURCE_DIR}/../data/ui/remmina_search.glade
+ ${CMAKE_CURRENT_SOURCE_DIR}/../data/ui/remmina_search_popover.glade
+ ${CMAKE_CURRENT_SOURCE_DIR}/../data/ui/remmina_snap_info_dialog.glade
+ ${CMAKE_CURRENT_SOURCE_DIR}/../data/ui/remmina_spinner.glade
+ ${CMAKE_CURRENT_SOURCE_DIR}/../data/ui/remmina_string_list.glade
+ ${CMAKE_CURRENT_SOURCE_DIR}/../data/ui/remmina_unlock.glade)
+message(DEBUG "Source list set to: " ${REMMINA_SRCS})
+
+compile_gresources(
+ RESOURCE_FILE
+ XML_OUT
+ TYPE
+ EMBED_C
+ PREFIX
+ /org/remmina/Remmina/src
+ SOURCE_DIR
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ RESOURCES
+ ${RESOURCE_LIST})
+
+add_custom_target(resource DEPENDS ${RESOURCE_FILE})
+add_executable(remmina ${REMMINA_SRCS} ${RESOURCE_FILE})
+add_dependencies(remmina resource)
+target_link_libraries(remmina ${GTK_LIBRARIES} -rdynamic)
+
+if(WITH_PYTHONLIBS)
+ if(PythonLibs_FOUND)
+ include_directories(${PYTHON_INCLUDE_DIRS})
+ target_link_libraries(remmina ${PYTHON_LIBRARIES})
+ endif()
+endif()
+
+if(WITH_MANPAGES)
+ install(FILES remmina.1 DESTINATION ${CMAKE_INSTALL_FULL_MANDIR}/man1)
+endif()
+
+target_link_libraries(remmina ${CMAKE_THREAD_LIBS_INIT})
+
+if(Intl_FOUND)
+ message(STATUS "${CMAKE_SYSTEM_NAME} detected, building with Intl")
+ include_directories(${Intl_INCLUDE_DIRS})
+ target_link_libraries(remmina ${Intl_LIBRARIES})
+endif()
+
+find_suggested_package(LIBSSH)
+if(LIBSSH_FOUND)
+ add_definitions(-DHAVE_LIBSSH)
+ include_directories(${LIBSSH_INCLUDE_DIRS})
+ target_link_libraries(remmina ${LIBSSH_LIBRARIES})
+endif()
+
+if(GCRYPT_FOUND)
+ include_directories(${GCRYPT_INCLUDE_DIRS})
+ target_link_libraries(remmina ${GCRYPT_LIBRARIES})
+endif()
+
+if(AVAHI_FOUND)
+ include_directories(${AVAHI_INCLUDE_DIRS})
+ target_link_libraries(remmina ${AVAHI_LIBRARIES})
+endif()
+
+if(OPENSSL_FOUND)
+ include_directories(${OPENSSL_INCLUDE_DIRS})
+ target_link_libraries(remmina ${OPENSSL_LIBRARIES})
+endif()
+
+option(WITH_VTE "Build with support for VTE" ON)
+if(GTK3_FOUND AND WITH_VTE)
+ set(_VTE_VERSION_NUMS 2.91 2.90)
+ foreach(__VTE_VERSION ${_VTE_VERSION_NUMS})
+ set(_VTE_VERSION_NUM ${__VTE_VERSION})
+ find_suggested_package(VTE)
+ if(VTE_FOUND)
+ break()
+ endif()
+ message(STATUS "VTE ${__VTE_VERSION} not found")
+ endforeach()
+elseif(WITH_VTE)
+ set(_VTE_VERSION_NUM)
+ find_package(VTE)
+endif()
+
+if(VTE_FOUND)
+ add_definitions(-DHAVE_LIBVTE)
+ include_directories(${VTE_INCLUDE_DIRS})
+ target_link_libraries(remmina ${VTE_LIBRARIES})
+endif()
+
+if(sodium_FOUND)
+ message(STATUS "Sodium found")
+ message(STATUS "Sodium include dirs ${sodium_INCLUDE_DIR}")
+ include_directories(${sodium_INCLUDE_DIR})
+ target_link_libraries(remmina sodium)
+endif()
+
+option(HAVE_LIBAPPINDICATOR "Build with support for status icon. Appindicator is required" ON)
+if(GTK3_FOUND)
+ if(HAVE_LIBAPPINDICATOR)
+ find_required_package(APPINDICATOR)
+ if(APPINDICATOR_FOUND)
+ add_definitions(-DHAVE_LIBAPPINDICATOR)
+ include_directories(${APPINDICATOR_INCLUDE_DIRS})
+ target_link_libraries(remmina ${APPINDICATOR_LIBRARIES})
+ message(STATUS "AppIndicator library dirs ${APPINDICATOR_LIBRARIES}")
+ message(STATUS "AppIndicator include dirs ${APPINDICATOR_INCLUDE_DIRS}")
+ else()
+ message(FATAL_ERROR "AppIndicator not found")
+ endif()
+ endif()
+ find_required_package(JSONGLIB)
+ if(JSONGLIB_FOUND)
+ include_directories(${JSONGLIB_INCLUDE_DIRS})
+ target_link_libraries(remmina ${JSONGLIB_LIBRARIES})
+ else()
+ message(FATAL_ERROR "json-glib library not found")
+ endif()
+endif()
+
+find_required_package(CURL)
+if(NOT CURL_FOUND)
+ message(FATAL_ERROR "libcurl not found")
+else()
+ include_directories(${CURL_INCLUDE_DIRS})
+ target_link_libraries(remmina ${CURL_LIBRARIES})
+endif()
+
+find_required_package(PCRE2)
+if(NOT PCRE2_FOUND)
+ message(FATAL_ERROR "libpcre2 library not found")
+endif()
+include_directories(${PCRE2_INCLUDE_DIRS})
+
+add_subdirectory(external_tools)
+
+install(TARGETS remmina DESTINATION ${CMAKE_INSTALL_BINDIR})
+install(
+ DIRECTORY include/remmina/
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/remmina
+ FILES_MATCHING
+ PATTERN "*.h")
+
+add_definitions(-DG_LOG_DOMAIN="remmina")