[rkward/frameworks] rkward: Bring back some of the logic we needed for finding the frontend executable. We now need it for finding the backend executable (which is still in libexec, i.e. a separate directory, now).
Thomas Friedrichsmeier
null at kde.org
Tue May 16 14:18:53 UTC 2017
Git commit d7228406ee08c4f5d66c5ca0c741053d2de63bfe by Thomas Friedrichsmeier.
Committed on 16/05/2017 at 14:17.
Pushed by tfry into branch 'frameworks'.
Bring back some of the logic we needed for finding the frontend executable. We now need it for finding the backend executable (which is still in libexec, i.e. a separate directory, now).
M +6 -6 rkward/CMakeLists.txt
M +1 -0 rkward/rbackend/CMakeLists.txt
M +5 -0 rkward/rbackend/rkfrontendtransmitter.cpp
https://commits.kde.org/rkward/d7228406ee08c4f5d66c5ca0c741053d2de63bfe
diff --git a/rkward/CMakeLists.txt b/rkward/CMakeLists.txt
index f80b068d..f6f78dda 100755
--- a/rkward/CMakeLists.txt
+++ b/rkward/CMakeLists.txt
@@ -33,21 +33,21 @@ SET(RKWard_Sources
rkconsole.cpp
)
-# somehow the needed libdirs for R do not get passed down automatically
+# somehow the detected R paths from FindR.cmake do not get passed down automatically
+GET_DIRECTORY_PROPERTY(R_EXECUTABLE DIRECTORY rbackend DEFINITION R_EXECUTABLE)
GET_DIRECTORY_PROPERTY(R_SHAREDLIBDIR DIRECTORY rbackend LINK_DIRECTORIES)
LINK_DIRECTORIES(${R_SHAREDLIBDIR})
-GET_DIRECTORY_PROPERTY(R_EXECUTABLE DIRECTORY rbackend DEFINITION R_EXECUTABLE)
ADD_CUSTOM_COMMAND (OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/rkward.ico"
COMMAND cmake -E copy "${CMAKE_CURRENT_SOURCE_DIR}/icons/app-icon/rkward.ico"
"${CMAKE_CURRENT_BINARY_DIR}/rkward.ico")
-add_executable(rkward ${RKWard_Sources} rkward_windows_icon.rc rkward.ico)
+ADD_EXECUTABLE(rkward ${RKWard_Sources} rkward_windows_icon.rc rkward.ico)
# NOTE: These definitions are needed for the startup procedure (main.cpp), only.
# We should switch with to target_compile_definitions once we require CMAKE 2.6+
-add_definitions (-DR_EXECUTABLE="${R_EXECUTABLE}")
-add_definitions (-DINSTALL_PATH="${CMAKE_INSTALL_PREFIX}")
-add_definitions (-DR_LIBS="${R_LIBDIR}")
+ADD_DEFINITIONS(-DR_EXECUTABLE="${R_EXECUTABLE}")
+ADD_DEFINITIONS(-DINSTALL_PATH="${CMAKE_INSTALL_PREFIX}")
+ADD_DEFINITIONS(-DR_LIBS="${R_LIBDIR}")
SET_TARGET_PROPERTIES(rkward PROPERTIES
MACOSX_BUNDLE_BUNDLE_NAME "RKWard")
diff --git a/rkward/rbackend/CMakeLists.txt b/rkward/rbackend/CMakeLists.txt
index 77786cf7..e4116695 100644
--- a/rkward/rbackend/CMakeLists.txt
+++ b/rkward/rbackend/CMakeLists.txt
@@ -54,6 +54,7 @@ SET (
rktransmitter.cpp
)
ADD_DEFINITIONS (-DRKWARD_SPLIT_PROCESS)
+ADD_DEFINITIONS (-DRKWARD_BACKEND_PATH="${CMAKE_INSTALL_PREFIX}/${LIBEXEC_INSTALL_DIR}")
LINK_DIRECTORIES(${R_SHAREDLIBDIR})
ADD_EXECUTABLE(rkward.rbackend ${rbackend_BACKEND_SRCS})
TARGET_LINK_LIBRARIES(rkward.rbackend rkgraphicsdevice.backend ${R_USED_LIBS} ${CMAKE_THREAD_LIBS_INIT} Qt5::Network Qt5::Core ${LibIntl_LIBRARIES})
diff --git a/rkward/rbackend/rkfrontendtransmitter.cpp b/rkward/rbackend/rkfrontendtransmitter.cpp
index 2f62e860..a55c8f66 100644
--- a/rkward/rbackend/rkfrontendtransmitter.cpp
+++ b/rkward/rbackend/rkfrontendtransmitter.cpp
@@ -102,6 +102,11 @@ void RKFrontendTransmitter::run () {
args.append ("--locale-dir=" + localeDir ().toUtf8 ().toPercentEncoding ());
connect (backend, static_cast<void (QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished), this, &RKFrontendTransmitter::backendExit);
QString backend_executable = findBackendAtPath (QCoreApplication::applicationDirPath ());
+#ifdef Q_OS_MAC
+ if (backend_executable.isNull ()) backend_executable = findBackendAtPath (QCoreApplication::applicationDirPath () + "/rkward.frontend.app/Contents/MacOS"); // this is for running directly from a build tree
+#endif
+ if (backend_executable.isEmpty ()) backend_executable = findBackendAtPath (RKWARD_BACKEND_PATH);
+ if (backend_executable.isNull ()) backend_executable = findBackendAtPath (QCoreApplication::applicationDirPath () + "../lib/libexec");
if (backend_executable.isEmpty ()) backend_executable = findBackendAtPath (QCoreApplication::applicationDirPath () + "/rbackend"); // for running directly from the build-dir
#ifdef Q_OS_MAC
if (backend_executable.isEmpty ()) backend_executable = findBackendAtPath (QCoreApplication::applicationDirPath () + "/../../../rbackend");
More information about the rkward-tracker
mailing list