@@ -40,10 +40,74 @@ MACRO (INSTALL_DEBUG_SYMBOLS targets)
40
40
ENDIF ()
41
41
ENDMACRO ()
42
42
43
+ # Installs manpage for given file (either script or executable)
44
+ #
45
+ FUNCTION (INSTALL_MANPAGE file)
46
+ IF (NOT UNIX )
47
+ RETURN ()
48
+ ENDIF ()
49
+ GET_FILENAME_COMPONENT (file_name "${file} " NAME )
50
+ SET (GLOB_EXPR
51
+ ${CMAKE_SOURCE_DIR} /man/*${file} man.1*
52
+ ${CMAKE_SOURCE_DIR} /man/*${file} man.8*
53
+ ${CMAKE_BINARY_DIR} /man/*${file} man.1*
54
+ ${CMAKE_BINARY_DIR} /man/*${file} man.8*
55
+ )
56
+ IF (MYSQL_DOC_DIR)
57
+ SET (GLOB_EXPR
58
+ ${MYSQL_DOC_DIR} /man/*${file} man.1*
59
+ ${MYSQL_DOC_DIR} /man/*${file} man.8*
60
+ ${MYSQL_DOC_DIR} /man/*${file} .1*
61
+ ${MYSQL_DOC_DIR} /man/*${file} .8*
62
+ ${GLOB_EXPR}
63
+ )
64
+ ENDIF ()
65
+
66
+ FILE (GLOB_RECURSE MANPAGES ${GLOB_EXPR} )
67
+ IF (MANPAGES)
68
+ LIST (GET MANPAGES 0 MANPAGE)
69
+ STRING (REPLACE "${file} man.1" "${file} .1" MANPAGE "${MANPAGE} " )
70
+ STRING (REPLACE "${file} man.8" "${file} .8" MANPAGE "${MANPAGE} " )
71
+ IF (MANPAGE MATCHES "${file} .1" )
72
+ SET (SECTION man1)
73
+ ELSE ()
74
+ SET (SECTION man8)
75
+ ENDIF ()
76
+ INSTALL (FILES "${MANPAGE} " DESTINATION "${INSTALL_MANDIR} /${SECTION} " )
77
+ ENDIF ()
78
+ ENDFUNCTION ()
79
+
80
+ FUNCTION (INSTALL_SCRIPT)
81
+ CMAKE_PARSE_ARGUMENTS (ARG
82
+ "DESTINATION;COMPONENT"
83
+ ""
84
+ ${ARGN}
85
+ )
86
+
87
+ SET (script ${ARG_DEFAULT_ARGS} )
88
+ IF (NOT ARG_DESTINATION)
89
+ SET (ARG_DESTINATION ${INSTALL_BINDIR} )
90
+ ENDIF ()
91
+ IF (ARG_COMPONENT)
92
+ SET (COMP COMPONENT ${ARG_COMPONENT} )
93
+ ELSE ()
94
+ SET (COMP)
95
+ ENDIF ()
96
+
97
+ INSTALL (FILES
98
+ ${script}
99
+ DESTINATION ${ARG_DESTINATION}
100
+ PERMISSIONS OWNER_READ OWNER_WRITE
101
+ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE
102
+ WORLD_READ WORLD_EXECUTE ${COMP}
103
+ )
104
+ INSTALL_MANPAGE(${script} )
105
+ ENDFUNCTION ()
106
+
43
107
# Install symbolic link to CMake target.
44
108
# the link is created in the same directory as target
45
109
# and extension will be the same as for target file.
46
- MACRO (INSTALL_SYMLINK linkbasename target destination )
110
+ MACRO (INSTALL_SYMLINK linkbasename target destination component )
47
111
IF (UNIX )
48
112
GET_TARGET_PROPERTY (location ${target} LOCATION )
49
113
GET_FILENAME_COMPONENT (path ${location} PATH )
@@ -69,7 +133,12 @@ IF(UNIX)
69
133
STRING (REPLACE "${CMAKE_CFG_INTDIR} "
70
134
"\$ {CMAKE_INSTALL_CONFIG_NAME}" output ${output} )
71
135
ENDIF ()
72
- INSTALL (FILES ${output} DESTINATION ${destination} )
136
+ IF (component )
137
+ SET (COMP COMPONENT ${component} )
138
+ ELSE ()
139
+ SET (COMP)
140
+ ENDIF ()
141
+ INSTALL (FILES ${output} DESTINATION ${destination} ${COMP} )
73
142
ENDIF ()
74
143
ENDMACRO ()
75
144
@@ -129,13 +198,11 @@ ENDMACRO()
129
198
130
199
# Installs targets, also installs pdbs on Windows.
131
200
#
132
- # More stuff can be added later, e.g signing
133
- # or pre-link custom targets (one example is creating
134
- # version resource for windows executables)
201
+ #
135
202
136
203
FUNCTION (MYSQL_INSTALL_TARGETS)
137
204
CMAKE_PARSE_ARGUMENTS (ARG
138
- "DESTINATION"
205
+ "DESTINATION;COMPONENT "
139
206
""
140
207
${ARGN}
141
208
)
@@ -147,15 +214,24 @@ FUNCTION(MYSQL_INSTALL_TARGETS)
147
214
MESSAGE (FATAL_ERROR "Need DESTINATION parameter for MYSQL_INSTALL_TARGETS" )
148
215
ENDIF ()
149
216
150
- # If signing is required, sign executables before installing
217
+
151
218
FOREACH (target ${TARGETS} )
152
- IF (SIGNCODE AND SIGNCODE_ENABLED)
219
+ # If signing is required, sign executables before installing
220
+ IF (SIGNCODE AND SIGNCODE_ENABLED)
153
221
SIGN_TARGET(${target} )
154
222
ENDIF ()
223
+ # For Windows, add version info to executables
155
224
ADD_VERSION_INFO(${target} )
225
+ # Install man pages on Unix
226
+ IF (UNIX )
227
+ GET_TARGET_PROPERTY (target_location ${target} LOCATION )
228
+ INSTALL_MANPAGE(${target_location} )
229
+ ENDIF ()
156
230
ENDFOREACH ()
157
-
158
- INSTALL (TARGETS ${TARGETS} DESTINATION ${ARG_DESTINATION} )
231
+ IF (ARG_COMPONENT)
232
+ SET (COMP COMPONENT ${ARG_COMPONENT} )
233
+ ENDIF ()
234
+ INSTALL (TARGETS ${TARGETS} DESTINATION ${ARG_DESTINATION} ${COMP} )
159
235
SET (INSTALL_LOCATION ${ARG_DESTINATION} )
160
236
INSTALL_DEBUG_SYMBOLS("${TARGETS} " )
161
237
SET (INSTALL_LOCATION)
0 commit comments