1
#this file contains the following macros:
9
# KDE_TARGET_LINK_CONV_LIBRARIES
10
# KDE_CREATE_LIBTOOL_FILE
15
#this should better be part of cmake:
16
#add an additional file to the list of files a source file depends on
17
MACRO(ADD_FILE_DEPENDANCY file)
18
SET(${file}_deps ${${file}_deps} ${ARGN})
19
SET_SOURCE_FILES_PROPERTIES(
25
ENDMACRO(ADD_FILE_DEPENDANCY)
28
#create the kidl and skeletion file for dcop stuff
29
#usage: KDE_ADD_COP_SKELS(foo_SRCS ${dcop_headers})
30
MACRO(KDE_ADD_DCOP_SKELS _sources)
31
FOREACH (_current_FILE ${ARGN})
32
GET_FILENAME_COMPONENT(_basename ${_current_FILE} NAME_WE)
34
SET(_skel ${CMAKE_CURRENT_BINARY_DIR}/${_basename}_skel_skel.cpp)
35
SET(_kidl ${CMAKE_CURRENT_BINARY_DIR}/${_basename}_skel.kidl)
37
ADD_CUSTOM_COMMAND(OUTPUT ${_kidl}
39
ARGS ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE} > ${_kidl}
40
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE}
43
ADD_CUSTOM_COMMAND(OUTPUT ${_skel}
44
COMMAND ${DCOPIDL2CPP}
45
ARGS --c++-suffix cpp --no-signals --no-stub ${_kidl}
49
SET(${_sources} ${${_sources}} ${_skel})
51
ENDFOREACH (_current_FILE)
53
ENDMACRO(KDE_ADD_DCOP_SKELS)
55
MACRO(KDE_ADD_DCOP_STUBS _sources)
56
FOREACH (_current_FILE ${ARGN})
58
IF(${_current_FILE} MATCHES "^/.+") #abs path
59
SET(_tmp_FILE ${_current_FILE})
60
ELSE(${_current_FILE} MATCHES "^/.+")
61
SET(_tmp_FILE ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE})
62
ENDIF(${_current_FILE} MATCHES "^/.+")
64
GET_FILENAME_COMPONENT(_basename ${_tmp_FILE} NAME_WE)
66
SET(_stub_CPP ${CMAKE_CURRENT_BINARY_DIR}/${_basename}_stub.cpp)
67
# SET(_stub_H ${CMAKE_CURRENT_BINARY_DIR}/${_basename}_stub.h)
68
SET(_kidl ${CMAKE_CURRENT_BINARY_DIR}/${_basename}_stub.kidl)
70
ADD_CUSTOM_COMMAND(OUTPUT ${_kidl}
72
ARGS ${tmp_FILE} > ${_kidl}
76
ADD_CUSTOM_COMMAND(OUTPUT ${_stub_CPP}
77
COMMAND ${DCOPIDL2CPP}
78
ARGS --c++-suffix cpp --no-signals --no-skel ${_kidl}
82
SET(${_sources} ${${_sources}} ${_stub_CPP})
84
ENDFOREACH (_current_FILE)
86
ENDMACRO(KDE_ADD_DCOP_STUBS)
88
MACRO(KDE_ADD_KCFG_FILES _sources)
89
FOREACH (_current_FILE ${ARGN})
91
IF(${_current_FILE} MATCHES "^/.+") #abs path
92
SET(_tmp_FILE ${_current_FILE})
93
ELSE(${_current_FILE} MATCHES "^/.+")
94
SET(_tmp_FILE ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE})
95
ENDIF(${_current_FILE} MATCHES "^/.+")
97
GET_FILENAME_COMPONENT(_basename ${_tmp_FILE} NAME_WE)
99
FILE(READ ${_tmp_FILE} _contents)
100
STRING(REGEX REPLACE "^(.*\n)?File=([^\n]+)\n.*$" "\\2" _kcfg_FILE "${_contents}")
102
SET(_src_FILE ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.cpp)
103
SET(_header_FILE ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h)
105
ADD_CUSTOM_COMMAND(OUTPUT ${_src_FILE}
107
ARGS ${_kcfg_FILE} ${_tmp_FILE}
108
DEPENDS ${_tmp_FILE} )
111
SET(${_sources} ${${_sources}} ${_src_FILE})
113
ENDFOREACH (_current_FILE)
115
ENDMACRO(KDE_ADD_KCFG_FILES)
121
#create the moc files and add them to the list of sources
122
#usage: KDE_ADD_MOC_FILES(foo_SRCS ${moc_headers})
123
MACRO(KDE_ADD_MOC_FILES _sources)
124
FOREACH (_current_FILE ${ARGN})
125
GET_FILENAME_COMPONENT(_basename ${_current_FILE} NAME_WE)
126
GET_FILENAME_COMPONENT(_path ${_current_FILE} PATH)
127
SET(_moc ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.moc.cpp)
129
ADD_CUSTOM_COMMAND(OUTPUT ${_moc}
131
ARGS ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE} -o ${_moc}
132
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE}
135
SET(${_sources} ${${_sources}} ${_moc})
137
ENDFOREACH (_current_FILE)
138
ENDMACRO(KDE_ADD_MOC_FILES)
140
#create the implementation files from the ui files and add them to the list of sources
141
#usage: KDE_ADD_UI_FILES(foo_SRCS ${ui_files})
142
MACRO(KDE_ADD_UI_FILES _sources )
143
FOREACH (_current_FILE ${ARGN})
145
GET_FILENAME_COMPONENT(_basename ${_current_FILE} NAME_WE)
146
SET(_header ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h)
147
SET(_src ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.cpp)
148
SET(_moc ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.moc.cpp)
150
ADD_CUSTOM_COMMAND(OUTPUT ${_header}
152
ARGS -nounload -o ${_header} ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE}
153
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE}
156
# ADD_CUSTOM_COMMAND(OUTPUT ${_src}
158
# ARGS -nounload -tr tr2i18n -o ${_src} -impl ${_header} ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE}
162
ADD_CUSTOM_COMMAND(OUTPUT ${_src}
163
COMMAND ${CMAKE_COMMAND}
165
-DKDE_UIC_FILE:STRING=${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE}
166
-DKDE_UIC_CPP_FILE:STRING=${_src}
167
-DKDE_UIC_H_FILE:STRING=${_header}
168
-P ${CMAKE_SOURCE_DIR}/cmake/kdeuic.cmake
172
ADD_CUSTOM_COMMAND(OUTPUT ${_moc}
174
ARGS ${_header} -o ${_moc}
178
SET(${_sources} ${${_sources}} ${_src} ${_moc} )
180
ENDFOREACH (_current_FILE)
181
ENDMACRO(KDE_ADD_UI_FILES)
184
SET(_matching_FILES )
185
FOREACH (_current_FILE ${ARGN})
186
IF (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE})
188
FILE(READ ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE} _contents)
190
IF(${_current_FILE} MATCHES "^/.+")
191
SET(_tmp_FILE ${_current_FILE})
192
ELSE(${_current_FILE} MATCHES "^/.+")
193
SET(_tmp_FILE ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE})
194
ENDIF(${_current_FILE} MATCHES "^/.+")
195
GET_FILENAME_COMPONENT(_abs_FILE ${_tmp_FILE} ABSOLUTE)
196
GET_FILENAME_COMPONENT(_abs_PATH ${_abs_FILE} PATH)
198
STRING(REGEX MATCHALL "#include +[^ ]+\\.moc[\">]" _match "${_contents}")
200
FOREACH (_current_MOC_INC ${_match})
201
STRING(REGEX MATCH "[^ <\"]+\\.moc" _current_MOC "${_current_MOC_INC}")
203
GET_FILENAME_COMPONENT(_basename ${_current_MOC} NAME_WE)
204
# SET(_header ${CMAKE_CURRENT_SOURCE_DIR}/${_basename}.h)
205
SET(_header ${_abs_PATH}/${_basename}.h)
206
SET(_moc ${CMAKE_CURRENT_BINARY_DIR}/${_current_MOC})
208
ADD_CUSTOM_COMMAND(OUTPUT ${_moc}
210
ARGS ${_header} -o ${_moc}
214
ADD_FILE_DEPENDANCY(${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE} ${_moc})
216
ENDFOREACH (_current_MOC_INC)
219
ENDIF (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE})
220
ENDFOREACH (_current_FILE)
221
ENDMACRO(KDE_AUTOMOC)
223
MACRO(KDE_INSTALL_ICONS _theme)
224
ADD_CUSTOM_TARGET(install_icons )
225
SET_TARGET_PROPERTIES(install_icons PROPERTIES POST_INSTALL_SCRIPT install_icons.cmake )
226
FILE(WRITE install_icons.cmake "# icon installations rules\n")
228
FILE(GLOB _icons *.png)
229
FOREACH(_current_ICON ${_icons} )
230
STRING(REGEX REPLACE "^.*/[a-zA-Z]+([0-9]+)\\-([a-z]+)\\-(.+\\.png)$" "\\1" _size "${_current_ICON}")
231
STRING(REGEX REPLACE "^.*/[a-zA-Z]+([0-9]+)\\-([a-z]+)\\-(.+\\.png)$" "\\2" _group "${_current_ICON}")
232
STRING(REGEX REPLACE "^.*/[a-zA-Z]+([0-9]+)\\-([a-z]+)\\-(.+\\.png)$" "\\3" _name "${_current_ICON}")
234
SET(_icon_GROUP "actions")
236
IF(${_group} STREQUAL "mime")
237
SET(_icon_GROUP "mimetypes")
238
ENDIF(${_group} STREQUAL "mime")
240
IF(${_group} STREQUAL "filesys")
241
SET(_icon_GROUP "filesystems")
242
ENDIF(${_group} STREQUAL "filesys")
244
IF(${_group} STREQUAL "device")
245
SET(_icon_GROUP "devices")
246
ENDIF(${_group} STREQUAL "device")
248
IF(${_group} STREQUAL "app")
249
SET(_icon_GROUP "apps")
250
ENDIF(${_group} STREQUAL "app")
252
IF(${_group} STREQUAL "action")
253
SET(_icon_GROUP "actions")
254
ENDIF(${_group} STREQUAL "action")
256
# MESSAGE(STATUS "icon: ${_current_ICON} size: ${_size} group: ${_group} name: ${_name}" )
258
FILE(APPEND install_icons.cmake "CONFIGURE_FILE( ${_current_ICON} ${CMAKE_INSTALL_PREFIX}/share/icons/${_theme}/${_size}x${_size}/${_icon_GROUP}/${_name} COPYONLY) \n")
260
ENDFOREACH (_current_ICON)
261
ENDMACRO(KDE_INSTALL_ICONS _theme)
263
MACRO(KDE_PLACEHOLDER)
264
ENDMACRO(KDE_PLACEHOLDER)