[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [rkward/work/frameworks-Mac] rkward: updated install logic for Mac (and a select general changes)
From:       R.J.V. Bertin <null () kde ! org>
Date:       2017-05-17 19:42:55
Message-ID: E1dB4qV-0004hc-2S () code ! kde ! org
[Download RAW message or body]

Git commit d2b6e33940fb76f6fef1ead93fd311cdf8c9368c by R.J.V. Bertin.
Committed on 17/05/2017 at 19:29.
Pushed by rjvbb into branch 'work/frameworks-Mac'.

updated install logic for Mac (and a select general changes)

This implements a first draft of a minimal build and install
procedure on Mac, meaning with as little changes as possible from
a standard Linux install but still providing a complete "Mac
experience".
A hook is provided for a future optional build as a standalone,
all-encompassing .app bundle
The application icon is generated on the fly from the available
png and svgz images (with a new enough ECM library).

M  +44   -14   rkward/CMakeLists.txt
M  +2    -1    rkward/rbackend/CMakeLists.txt

https://commits.kde.org/rkward/d2b6e33940fb76f6fef1ead93fd311cdf8c9368c

diff --git a/rkward/CMakeLists.txt b/rkward/CMakeLists.txt
index f6f78dda..03a0b1b4 100755
--- a/rkward/CMakeLists.txt
+++ b/rkward/CMakeLists.txt
@@ -4,11 +4,15 @@ ENDIF(NOT ${PROJECT_NAME} STREQUAL "rkward")
 
 INCLUDE(SetVersionNumber.cmake)
 
-IF(Q_WS_MAC)
-	SET(CPACK_BUNDLE_ICON rkward.icns)
-	SET(CPACK_BUNDLE_NAME RKWard)
-	SET(CPACK_BUNDLE_STARTUP_COMMAND rkward)
-ENDIF(Q_WS_MAC)
+IF(APPLE)
+    SET(CPACK_BUNDLE_ICON rkward.icns)
+    SET(CPACK_BUNDLE_NAME RKWard)
+    SET(CPACK_BUNDLE_STARTUP_COMMAND rkward)
+ENDIF()
+SET(RKWARD_FRONTEND_LOCATION ${KDE_INSTALL_LIBEXECDIR})
+# once tested and working this could become the default on Mac:
+OPTION(APPLE_STANDALONE_BUNDLE "Generate a standalone app bundle when building on \
Mac" OFF) +ADD_FEATURE_INFO("App Bundle" APPLE_STANDALONE_BUNDLE "Generate a \
standalone app bundle when building on Mac. Do not use for now.")  
 ADD_SUBDIRECTORY( dataeditor )
 ADD_SUBDIRECTORY( settings )
@@ -38,11 +42,20 @@ GET_DIRECTORY_PROPERTY(R_EXECUTABLE DIRECTORY rbackend DEFINITION \
R_EXECUTABLE)  GET_DIRECTORY_PROPERTY(R_SHAREDLIBDIR DIRECTORY rbackend \
LINK_DIRECTORIES)  LINK_DIRECTORIES(${R_SHAREDLIBDIR})
 
-ADD_CUSTOM_COMMAND (OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/rkward.ico"
+IF(APPLE)
+    # create the application icon from the available sources. This should work on MS \
Windows +    # too but I don't want to start modifying things I cannot test.
+    FILE(GLOB ICON_SRCS \
"${CMAKE_CURRENT_SOURCE_DIR}/icons/app-icon/*-apps-rkward.png")  +    # recent ECM \
versions will prefer the scalable version: prepend it to the icon source list: +    \
ECM_ADD_APP_ICON(RKWard_Sources ICONS \
${CMAKE_CURRENT_SOURCE_DIR}/icons/app-icon/sc-apps-rkward.svgz ${ICON_SRCS}) +    \
ADD_EXECUTABLE(rkward ${RKWard_Sources}) +ELSE()
+    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)
+ENDIF()
 
-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}")
@@ -51,14 +64,14 @@ ADD_DEFINITIONS(-DR_LIBS="${R_LIBDIR}")
 SET_TARGET_PROPERTIES(rkward PROPERTIES
         MACOSX_BUNDLE_BUNDLE_NAME "RKWard")
 
-IF(Q_WS_MAC)
+IF(APPLE)
 	SET(RKWARD_INFOPLIST_TEMPLATE Info.plist.in)
 	SET(RKWARD_INFOPLIST_FILE ${CMAKE_SOURCE_DIR}/rkward/Info.plist)
 	CONFIGURE_FILE(
 		${RKWARD_INFOPLIST_TEMPLATE}
 		${RKWARD_INFOPLIST_FILE}
 		@ONLY)
-ENDIF(Q_WS_MAC)
+ENDIF(APPLE)
 
 TARGET_LINK_LIBRARIES(rkward windows ${RKWARD_ADDLIBS} agents dialogs plugin \
settings dataeditor core scriptbackends rbackend misc KF5::WindowSystem Qt5::Widgets \
KF5::XmlGui ${LibIntl_LIBRARIES})  IF(KF5Crash_FOUND)
@@ -73,12 +86,29 @@ INSTALL(DIRECTORY plugins/ pages DESTINATION \
${DATA_INSTALL_DIR}/rkward  
 INSTALL(FILES rkwardui.rc rkconsolepart.rc DESTINATION \
${KXMLGUI_INSTALL_DIR}/rkward)  INSTALL(FILES resource.ver DESTINATION \
                ${DATA_INSTALL_DIR}/rkward)
-INSTALL(TARGETS rkward DESTINATION ${BIN_INSTALL_DIR})
 
-IF(Q_WS_MAC)
-	INSTALL(FILES ${CMAKE_SOURCE_DIR}/rkward/icons/app-icon/rkward.icns DESTINATION \
                ${BUNDLE_INSTALL_DIR}/${CPACK_BUNDLE_NAME}.app/Contents/Resources)
-	INSTALL(FILES ${RKWARD_INFOPLIST_FILE} DESTINATION \
                ${BUNDLE_INSTALL_DIR}/${CPACK_BUNDLE_NAME}.app/Contents)
-ENDIF(Q_WS_MAC)
+IF(APPLE)
+    INSTALL(TARGETS rkward DESTINATION ${BUNDLE_INSTALL_DIR})
+    if(APPLE_STANDALONE_BUNDLE)
+#         INSTALL(FILES ${CMAKE_SOURCE_DIR}/rkward/icons/app-icon/rkward.icns \
DESTINATION ${BUNDLE_INSTALL_DIR}/${CPACK_BUNDLE_NAME}.app/Contents/Resources) +#     \
INSTALL(FILES ${RKWARD_INFOPLIST_FILE} DESTINATION \
${BUNDLE_INSTALL_DIR}/${CPACK_BUNDLE_NAME}.app/Contents) +    ENDIF()
+    # the MacOSX bundle display name property (CFBundleDisplayName) is not currently \
supported by cmake, +    # so has to be set for all targets in this cmake file
+    SET(MACOSX_BUNDLE_DISPLAY_NAME RKWard)
+    # We provide our own Info.plist, but for the wrapper only
+    set_target_properties(rkward PROPERTIES MACOSX_BUNDLE_INFO_PLIST \
${RKWARD_INFOPLIST_FILE}) +    set_target_properties(rkward PROPERTIES \
MACOSX_BUNDLE_GUI_IDENTIFIER "org.kde.RKWard") +    set_target_properties(rkward \
PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "RKWard") +    set_target_properties(rkward \
PROPERTIES MACOSX_BUNDLE_DISPLAY_NAME "RKWard") +    set_target_properties(rkward \
PROPERTIES MACOSX_BUNDLE_INFO_STRING "Frontend to the R statistics language") +    \
set_target_properties(rkward PROPERTIES MACOSX_BUNDLE_LONG_VERSION_STRING "RKWard \
${RKVERSION_NUMBER}") +    set_target_properties(rkward PROPERTIES \
MACOSX_BUNDLE_SHORT_VERSION_STRING "${RKVERSION_NUMBER}") +    \
set_target_properties(rkward PROPERTIES MACOSX_BUNDLE_BUNDLE_VERSION \
"${RKVERSION_NUMBER}") +    set_target_properties(rkward PROPERTIES \
MACOSX_BUNDLE_COPYRIGHT "RKWard Team") +ELSE()
+    INSTALL(TARGETS rkward DESTINATION ${BIN_INSTALL_DIR})
+ENDIF()
 
 INSTALL(FILES org.kde.rkward.desktop org.kde.rkward-open.desktop DESTINATION \
${XDG_APPS_INSTALL_DIR})  INSTALL(FILES vnd.rkward.r.xml DESTINATION \
                ${XDG_MIME_INSTALL_DIR})
diff --git a/rkward/rbackend/CMakeLists.txt b/rkward/rbackend/CMakeLists.txt
index e4116695..9fb90a6f 100644
--- a/rkward/rbackend/CMakeLists.txt
+++ b/rkward/rbackend/CMakeLists.txt
@@ -54,9 +54,10 @@ SET (
 	rktransmitter.cpp
 )
 ADD_DEFINITIONS (-DRKWARD_SPLIT_PROCESS)
-ADD_DEFINITIONS (-DRKWARD_BACKEND_PATH="${CMAKE_INSTALL_PREFIX}/${LIBEXEC_INSTALL_DIR}")
 +ADD_DEFINITIONS (-DRKWARD_BACKEND_PATH="${KDE_INSTALL_LIBEXECDIR}")
 LINK_DIRECTORIES(${R_SHAREDLIBDIR})
 ADD_EXECUTABLE(rkward.rbackend ${rbackend_BACKEND_SRCS})
+ECM_MARK_NONGUI_EXECUTABLE(rkward.rbackend)
 TARGET_LINK_LIBRARIES(rkward.rbackend rkgraphicsdevice.backend ${R_USED_LIBS} \
${CMAKE_THREAD_LIBS_INIT} Qt5::Network Qt5::Core ${LibIntl_LIBRARIES})  
 IF(WIN32)


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic