From 50ae7287c2ddb57fb81381d0e0d3775b77bd5f66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Bidar?= Date: Wed, 11 Oct 2023 23:16:57 +0300 Subject: [PATCH] Optionally support sig-c++-3.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fall back to sig-c++2.0 if not found Signed-off-by: Björn Bidar --- CMakeLists.txt | 18 +++++++++++++----- include/i3ipc++/ipc.hpp | 15 +++++++++++---- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cd1d378..7b7d8e4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,10 +4,20 @@ project(i3ipc++) option(I3IPCpp_WITH_TESTS "Build unit tests executables" OFF) option(I3IPCpp_BUILD_EXAMPLES "Build example executables" OFF) -find_package(PkgConfig) -pkg_check_modules(SIGCPP REQUIRED sigc++-2.0) -pkg_check_modules(JSONCPP REQUIRED jsoncpp) +file(GLOB_RECURSE SRC src/*.cpp) +add_library(i3ipc++ ${SRC}) + +find_package(PkgConfig) +pkg_check_modules(JSONCPP REQUIRED jsoncpp) +pkg_check_modules(SIGCPP sigc++-3.0) +if(SIGCPP_FOUND) + target_compile_definitions(i3ipc++ + PUBLIC I3CPP_IPC_SIGCPP3=${SIGCPP_FOUND} + ) +else() +pkg_check_modules(SIGCPP REQUIRED sigc++-2.0) +endif() set(I3IPCpp_INCLUDE_DIRS ${SIGCPP_INCLUDE_DIRS} @@ -31,8 +41,6 @@ set(I3IPCpp_LIBRARIES # set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g3 -DDEBUG") # set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2") -file(GLOB_RECURSE SRC src/*.cpp) -add_library(i3ipc++ ${SRC}) target_include_directories(i3ipc++ PUBLIC diff --git a/include/i3ipc++/ipc.hpp b/include/i3ipc++/ipc.hpp index 86f6c47..105aef1 100644 --- a/include/i3ipc++/ipc.hpp +++ b/include/i3ipc++/ipc.hpp @@ -369,14 +369,21 @@ public: * Disconnect the event socket */ void disconnect_event_socket(); - - sigc::signal signal_workspace_event; ///< Workspace event signal +#ifdef I3CPP_IPC_SIGCPP3 + sigc::signal signal_workspace_event; ///< Workspace event signal + sigc::signal signal_output_event; ///< Output event signal + sigc::signal signal_mode_event; ///< Output mode event signal + sigc::signal signal_window_event; ///< Window event signal + sigc::signal signal_barconfig_update_event; ///< Barconfig update event signal + sigc::signal signal_binding_event; ///< Binding event signal + sigc::signal&)> signal_event; ///< i3 event signal @note Default handler routes event to signal according to type +#else + sigc::signal signal_workspace_event; ///< Workspace event signal sigc::signal signal_output_event; ///< Output event signal sigc::signal signal_mode_event; ///< Output mode event signal sigc::signal signal_window_event; ///< Window event signal sigc::signal signal_barconfig_update_event; ///< Barconfig update event signal - sigc::signal signal_binding_event; ///< Binding event signal - sigc::signal&> signal_event; ///< i3 event signal @note Default handler routes event to signal according to type +#endif private: const int32_t m_main_socket; int32_t m_event_socket;