From c66729e187b3bbf014193494ad7be1793e0347ad Mon Sep 17 00:00:00 2001 From: Nick Bolton Date: Thu, 14 Sep 2017 13:27:02 +0100 Subject: [PATCH] #6151 Introduce synergy-core --- src/cmd/CMakeLists.txt | 1 + src/cmd/core/CMakeLists.txt | 23 ++++++++++++++ src/cmd/core/main.cpp | 61 +++++++++++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+) create mode 100644 src/cmd/core/CMakeLists.txt create mode 100644 src/cmd/core/main.cpp diff --git a/src/cmd/CMakeLists.txt b/src/cmd/CMakeLists.txt index f9defd3e..8cae1acd 100644 --- a/src/cmd/CMakeLists.txt +++ b/src/cmd/CMakeLists.txt @@ -14,5 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . +add_subdirectory(core) add_subdirectory(synergyc) add_subdirectory(synergys) diff --git a/src/cmd/core/CMakeLists.txt b/src/cmd/core/CMakeLists.txt new file mode 100644 index 00000000..dfd1ea04 --- /dev/null +++ b/src/cmd/core/CMakeLists.txt @@ -0,0 +1,23 @@ +# synergy -- mouse and keyboard sharing utility +# Copyright (C) 2012-2016 Symless Ltd. +# Copyright (C) 2009 Nick Bolton +# +# This package is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# found in the file LICENSE that should have accompanied this file. +# +# This package 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, see . + +set(sources + main.cpp +) + +add_executable(synergy-core ${sources}) +target_link_libraries(synergy-core + arch base client common io mt net ipc platform server core ${libs} ${OPENSSL_LIBS}) diff --git a/src/cmd/core/main.cpp b/src/cmd/core/main.cpp new file mode 100644 index 00000000..88e0ec72 --- /dev/null +++ b/src/cmd/core/main.cpp @@ -0,0 +1,61 @@ +/* + * synergy -- mouse and keyboard sharing utility + * Copyright (C) 2012-2016 Symless Ltd. + * Copyright (C) 2002 Chris Schoeneman + * + * This package is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * found in the file LICENSE that should have accompanied this file. + * + * This package 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, see . + */ + +#include "core/ClientApp.h" +#include "core/ServerApp.h" +#include "arch/Arch.h" +#include "base/Log.h" +#include "base/EventQueue.h" + +#include + +int +main(int argc, char** argv) +{ + // TODO: use existing arg parse code + bool server, client; + if (argc > 1) { + server = std::string(argv[1]) == "--server"; + client = std::string(argv[1]) == "--client"; + } + +#if SYSAPI_WIN32 + // record window instance for tray icon, etc + ArchMiscWindows::setInstanceWin32(GetModuleHandle(NULL)); +#endif + + Arch arch; + arch.init(); + + Log log; + EventQueue events; + + if (server) { + ServerApp app(&events); + return app.run(argc, argv); + } + else if (client) { + ClientApp app(&events); + return app.run(argc, argv); + } + else { + // TODO: use common error code + std::cerr << "error: use --client or --server args" << std::endl; + return 1; + } +}