Skip to content

Commit 660e904

Browse files
committed
cmake: fix package generation on Mac OS X
1 parent 2c8bef2 commit 660e904

File tree

4 files changed

+110
-90
lines changed

4 files changed

+110
-90
lines changed

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ cmake_install.cmake
1212
CPackConfig.cmake
1313
CPackSourceConfig.cmake
1414
DartConfiguration.tcl
15+
CMakeCPackOptions.cmake
1516
_CPack_Packages
17+
LICENSE.txt
1618
external/*
1719
!external/README
1820

@@ -28,6 +30,7 @@ external/*
2830
*.sh
2931
*.deb
3032
*.rpm
33+
*.dmg
3134
*.tar.Z
3235
*.tar.gz
3336

CMakeCPack.cmake

+96
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
2+
# Generate .txt license file for CPack (PackageMaker requires a file extension)
3+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/LICENSE ${CMAKE_CURRENT_BINARY_DIR}/LICENSE.txt @ONLY)
4+
5+
SET(CPACK_BINARY_ZIP "ON")
6+
7+
# Workaround to remove c++ compiler macros and defines for Eclipse.
8+
# If c++ macros/defines are set __cplusplus is also set which causes
9+
# problems when compiling freerdp/jni. To prevent this problem we set the macros to "".
10+
11+
if (ANDROID AND CMAKE_EXTRA_GENERATOR STREQUAL "Eclipse CDT4")
12+
set(CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_DEFINED_MACROS "")
13+
message(STATUS "Disabled CXX system defines for eclipse (workaround).")
14+
endif()
15+
16+
set(CPACK_SOURCE_IGNORE_FILES "/\\\\.git/;/\\\\.gitignore;/CMakeCache.txt")
17+
18+
if(NOT WIN32)
19+
if(APPLE AND (NOT IOS))
20+
21+
if(WITH_SERVER)
22+
set(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} "mfreerdp-server")
23+
endif()
24+
endif()
25+
26+
if(WITH_X11)
27+
set(CPACK_PACKAGE_EXECUTABLES "xfreerdp")
28+
29+
if(WITH_SERVER)
30+
set(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} "xfreerdp-server")
31+
endif()
32+
endif()
33+
endif()
34+
35+
set(CPACK_SYSTEM_NAME "${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
36+
set(CPACK_TOPLEVEL_TAG "${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
37+
38+
string(TOLOWER ${CMAKE_PROJECT_NAME} CMAKE_PROJECT_NAME_lower)
39+
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME_lower}-${FREERDP_VERSION_FULL}-${CPACK_SYSTEM_NAME}")
40+
set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME_lower}-${FREERDP_VERSION_FULL}-${CPACK_SYSTEM_NAME}")
41+
42+
set(CPACK_PACKAGE_NAME "FreeRDP")
43+
set(CPACK_PACKAGE_VENDOR "FreeRDP")
44+
set(CPACK_PACKAGE_VERSION ${FREERDP_VERSION_FULL})
45+
set(CPACK_PACKAGE_VERSION_MAJOR ${FREERDP_VERSION_MAJOR})
46+
set(CPACK_PACKAGE_VERSION_MINOR ${FREERDP_VERSION_MINOR})
47+
set(CPACK_PACKAGE_VERSION_PATCH ${FREERDP_VERSION_REVISION})
48+
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "FreeRDP: A Remote Desktop Protocol Implementation")
49+
50+
set(CPACK_PACKAGE_CONTACT "Marc-Andre Moreau")
51+
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "[email protected]")
52+
set(CPACK_DEBIAN_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR})
53+
54+
set(CPACK_PACKAGE_INSTALL_DIRECTORY "FreeRDP")
55+
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_BINARY_DIR}/LICENSE.txt")
56+
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/LICENSE.txt")
57+
58+
set(CPACK_NSIS_MODIFY_PATH ON)
59+
set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/resources\\\\FreeRDP_Install.bmp")
60+
set(CPACK_NSIS_MUI_ICON "${CMAKE_SOURCE_DIR}/resources\\\\FreeRDP_Icon_96px.ico")
61+
set(CPACK_NSIS_MUI_UNICON "${CMAKE_SOURCE_DIR}/resource\\\\FreeRDP_Icon_96px.ico")
62+
63+
set(CPACK_COMPONENTS_ALL client server libraries headers)
64+
65+
if(MSVC)
66+
if(MSVC_RUNTIME STREQUAL "dynamic")
67+
set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
68+
include(InstallRequiredSystemLibraries)
69+
70+
install(PROGRAMS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS}
71+
DESTINATION ${CMAKE_INSTALL_BINDIR}
72+
COMPONENT libraries)
73+
endif()
74+
endif()
75+
76+
set(CPACK_COMPONENT_CLIENT_DISPLAY_NAME "Client")
77+
set(CPACK_COMPONENT_CLIENT_GROUP "Applications")
78+
79+
set(CPACK_COMPONENT_SERVER_DISPLAY_NAME "Server")
80+
set(CPACK_COMPONENT_SERVER_GROUP "Applications")
81+
82+
set(CPACK_COMPONENT_LIBRARIES_DISPLAY_NAME "Libraries")
83+
set(CPACK_COMPONENT_LIBRARIES_GROUP "Runtime")
84+
85+
set(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "Headers")
86+
set(CPACK_COMPONENT_HEADERS_GROUP "Development")
87+
88+
set(CPACK_COMPONENT_GROUP_RUNTIME_DESCRIPTION "Runtime")
89+
set(CPACK_COMPONENT_GROUP_APPLICATIONS_DESCRIPTION "Applications")
90+
set(CPACK_COMPONENT_GROUP_DEVELOPMENT_DESCRIPTION "Development")
91+
92+
configure_file("${CMAKE_SOURCE_DIR}/CMakeCPackOptions.cmake.in"
93+
"${CMAKE_BINARY_DIR}/CMakeCPackOptions.cmake" @ONLY)
94+
set(CPACK_PROJECT_CONFIG_FILE "${CMAKE_BINARY_DIR}/CMakeCPackOptions.cmake")
95+
96+
include(CPack)

CMakeCPackOptions.cmake.in

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# This file is configured at cmake time, and loaded at cpack time.
2+
# To pass variables to cpack from cmake, they must be configured in this file.
3+
4+
if("${CPACK_GENERATOR}" STREQUAL "PackageMaker")
5+
if(CMAKE_PACKAGE_QTGUI)
6+
set(CPACK_PACKAGE_DEFAULT_LOCATION "/Applications")
7+
else()
8+
set(CPACK_PACKAGE_DEFAULT_LOCATION "/usr")
9+
endif()
10+
endif()

CMakeLists.txt

+1-90
Original file line numberDiff line numberDiff line change
@@ -496,93 +496,4 @@ if(WITH_SERVER)
496496
endif()
497497

498498
# Packaging
499-
500-
SET(CPACK_BINARY_ZIP "ON")
501-
502-
set(CPACK_SOURCE_IGNORE_FILES "/\\\\.git/;/\\\\.gitignore;/CMakeCache.txt")
503-
504-
if(NOT WIN32)
505-
if(APPLE AND (NOT IOS))
506-
507-
if(WITH_SERVER)
508-
set(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} "mfreerdp-server")
509-
endif()
510-
endif()
511-
512-
if(WITH_X11)
513-
set(CPACK_PACKAGE_EXECUTABLES "xfreerdp")
514-
515-
if(WITH_SERVER)
516-
set(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} "xfreerdp-server")
517-
endif()
518-
endif()
519-
endif()
520-
521-
set(CPACK_SYSTEM_NAME "${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
522-
set(CPACK_TOPLEVEL_TAG "${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
523-
524-
string(TOLOWER ${CMAKE_PROJECT_NAME} CMAKE_PROJECT_NAME_lower)
525-
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME_lower}-${FREERDP_VERSION_FULL}-${CPACK_SYSTEM_NAME}")
526-
set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME_lower}-${FREERDP_VERSION_FULL}-${CPACK_SYSTEM_NAME}")
527-
528-
set(CPACK_PACKAGE_NAME "FreeRDP")
529-
set(CPACK_PACKAGE_VENDOR "FreeRDP")
530-
set(CPACK_PACKAGE_VERSION ${FREERDP_VERSION_FULL})
531-
set(CPACK_PACKAGE_VERSION_MAJOR ${FREERDP_VERSION_MAJOR})
532-
set(CPACK_PACKAGE_VERSION_MINOR ${FREERDP_VERSION_MINOR})
533-
set(CPACK_PACKAGE_VERSION_PATCH ${FREERDP_VERSION_REVISION})
534-
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "FreeRDP: A Remote Desktop Protocol Implementation")
535-
536-
set(CPACK_PACKAGE_CONTACT "Marc-Andre Moreau")
537-
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "[email protected]")
538-
set(CPACK_DEBIAN_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR})
539-
540-
set(CPACK_PACKAGE_INSTALL_DIRECTORY "FreeRDP")
541-
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/LICENSE")
542-
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE")
543-
544-
set(CPACK_NSIS_MODIFY_PATH ON)
545-
set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/resources\\\\FreeRDP_Install.bmp")
546-
set(CPACK_NSIS_MUI_ICON "${CMAKE_SOURCE_DIR}/resources\\\\FreeRDP_Icon_96px.ico")
547-
set(CPACK_NSIS_MUI_UNICON "${CMAKE_SOURCE_DIR}/resource\\\\FreeRDP_Icon_96px.ico")
548-
549-
set(CPACK_COMPONENTS_ALL client server libraries headers)
550-
551-
if(MSVC)
552-
if(MSVC_RUNTIME STREQUAL "dynamic")
553-
set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
554-
include(InstallRequiredSystemLibraries)
555-
556-
install(PROGRAMS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS}
557-
DESTINATION ${CMAKE_INSTALL_BINDIR}
558-
COMPONENT libraries)
559-
endif()
560-
endif()
561-
562-
set(CPACK_COMPONENT_CLIENT_DISPLAY_NAME "Client")
563-
set(CPACK_COMPONENT_CLIENT_GROUP "Applications")
564-
565-
set(CPACK_COMPONENT_SERVER_DISPLAY_NAME "Server")
566-
set(CPACK_COMPONENT_SERVER_GROUP "Applications")
567-
568-
set(CPACK_COMPONENT_LIBRARIES_DISPLAY_NAME "Libraries")
569-
set(CPACK_COMPONENT_LIBRARIES_GROUP "Runtime")
570-
571-
set(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "Headers")
572-
set(CPACK_COMPONENT_HEADERS_GROUP "Development")
573-
574-
set(CPACK_COMPONENT_GROUP_RUNTIME_DESCRIPTION "Runtime")
575-
set(CPACK_COMPONENT_GROUP_APPLICATIONS_DESCRIPTION "Applications")
576-
set(CPACK_COMPONENT_GROUP_DEVELOPMENT_DESCRIPTION "Development")
577-
578-
# Workaround to remove c++ compiler macros and defines for Eclipse.
579-
# If c++ macros/defines are set __cplusplus is also set which causes
580-
# problems when compiling freerdp/jni. To prevent this problem
581-
# we set the macros to "".
582-
if (ANDROID AND CMAKE_EXTRA_GENERATOR STREQUAL "Eclipse CDT4")
583-
set(CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_DEFINED_MACROS "")
584-
message(STATUS "Disabled CXX system defines for eclipse (workaround).")
585-
endif()
586-
587-
include(CPack)
588-
499+
include(CMakeCPack.cmake)

0 commit comments

Comments
 (0)