~ubuntu-branches/debian/sid/kdevelop/sid

« back to all changes in this revision

Viewing changes to cmake/KDEMacros.cmake

  • Committer: Bazaar Package Importer
  • Author(s): Jeremy Lainé
  • Date: 2006-05-23 18:39:42 UTC
  • Revision ID: james.westby@ubuntu.com-20060523183942-hucifbvh68k2bwz7
Tags: upstream-3.3.2
Import upstream version 3.3.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#this file contains the following macros:
 
2
# ADD_FILE_DEPENDANCY
 
3
# KDE_ADD_DCOP_SKELS
 
4
# KDE_ADD_DCOP_STUBS
 
5
# KDE_ADD_MOC_FILES
 
6
# KDE_ADD_UI_FILES
 
7
# KDE_ADD_KCFG_FILES
 
8
# KDE_AUTOMOC
 
9
# KDE_TARGET_LINK_CONV_LIBRARIES
 
10
# KDE_CREATE_LIBTOOL_FILE
 
11
# KDE_PLACEHOLDER
 
12
 
 
13
#neundorf@kde.org
 
14
 
 
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(
 
20
      ${file}
 
21
      PROPERTIES
 
22
      OBJECT_DEPENDS
 
23
      "${${file}_deps}"
 
24
   )
 
25
ENDMACRO(ADD_FILE_DEPENDANCY)
 
26
 
 
27
 
 
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)
 
33
 
 
34
          SET(_skel ${CMAKE_CURRENT_BINARY_DIR}/${_basename}_skel_skel.cpp)
 
35
      SET(_kidl ${CMAKE_CURRENT_BINARY_DIR}/${_basename}_skel.kidl)
 
36
 
 
37
          ADD_CUSTOM_COMMAND(OUTPUT ${_kidl}
 
38
         COMMAND ${DCOPIDL}
 
39
         ARGS ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE} > ${_kidl}
 
40
         DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE}
 
41
      )
 
42
 
 
43
          ADD_CUSTOM_COMMAND(OUTPUT ${_skel}
 
44
         COMMAND ${DCOPIDL2CPP}
 
45
         ARGS --c++-suffix cpp --no-signals --no-stub ${_kidl}
 
46
         DEPENDS ${_kidl}
 
47
      )
 
48
 
 
49
      SET(${_sources} ${${_sources}} ${_skel})
 
50
 
 
51
   ENDFOREACH (_current_FILE)
 
52
 
 
53
ENDMACRO(KDE_ADD_DCOP_SKELS)
 
54
 
 
55
MACRO(KDE_ADD_DCOP_STUBS _sources)
 
56
   FOREACH (_current_FILE ${ARGN})
 
57
 
 
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 "^/.+")
 
63
 
 
64
      GET_FILENAME_COMPONENT(_basename ${_tmp_FILE} NAME_WE)
 
65
 
 
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)
 
69
 
 
70
          ADD_CUSTOM_COMMAND(OUTPUT ${_kidl}
 
71
         COMMAND ${DCOPIDL}
 
72
         ARGS ${tmp_FILE} > ${_kidl}
 
73
         DEPENDS ${tmp_FILE}
 
74
      )
 
75
 
 
76
          ADD_CUSTOM_COMMAND(OUTPUT ${_stub_CPP}
 
77
         COMMAND ${DCOPIDL2CPP}
 
78
         ARGS --c++-suffix cpp --no-signals --no-skel ${_kidl}
 
79
         DEPENDS ${_kidl}
 
80
      )
 
81
 
 
82
      SET(${_sources} ${${_sources}} ${_stub_CPP})
 
83
 
 
84
   ENDFOREACH (_current_FILE)
 
85
 
 
86
ENDMACRO(KDE_ADD_DCOP_STUBS)
 
87
 
 
88
MACRO(KDE_ADD_KCFG_FILES _sources)
 
89
   FOREACH (_current_FILE ${ARGN})
 
90
 
 
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 "^/.+")
 
96
 
 
97
      GET_FILENAME_COMPONENT(_basename ${_tmp_FILE} NAME_WE)
 
98
 
 
99
      FILE(READ ${_tmp_FILE} _contents)
 
100
      STRING(REGEX REPLACE "^(.*\n)?File=([^\n]+)\n.*$" "\\2"  _kcfg_FILE "${_contents}")
 
101
 
 
102
      SET(_src_FILE    ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.cpp)
 
103
      SET(_header_FILE ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h)
 
104
 
 
105
      ADD_CUSTOM_COMMAND(OUTPUT ${_src_FILE}
 
106
         COMMAND ${KCFGC}
 
107
         ARGS ${_kcfg_FILE} ${_tmp_FILE}
 
108
         DEPENDS ${_tmp_FILE} )
 
109
 
 
110
 
 
111
      SET(${_sources} ${${_sources}} ${_src_FILE})
 
112
 
 
113
   ENDFOREACH (_current_FILE)
 
114
 
 
115
ENDMACRO(KDE_ADD_KCFG_FILES)
 
116
 
 
117
 
 
118
 
 
119
 
 
120
 
 
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)
 
128
 
 
129
      ADD_CUSTOM_COMMAND(OUTPUT ${_moc}
 
130
         COMMAND moc
 
131
         ARGS ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE} -o ${_moc}
 
132
         DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE}
 
133
      )
 
134
 
 
135
      SET(${_sources} ${${_sources}} ${_moc})
 
136
 
 
137
   ENDFOREACH (_current_FILE)
 
138
ENDMACRO(KDE_ADD_MOC_FILES)
 
139
 
 
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})
 
144
 
 
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)
 
149
 
 
150
      ADD_CUSTOM_COMMAND(OUTPUT ${_header}
 
151
         COMMAND uic
 
152
         ARGS  -nounload -o ${_header} ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE}
 
153
         DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE}
 
154
      )
 
155
 
 
156
#         ADD_CUSTOM_COMMAND(OUTPUT ${_src}
 
157
#         COMMAND uic
 
158
#         ARGS -nounload -tr tr2i18n -o ${_src} -impl ${_header} ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE}
 
159
#         DEPENDS ${_header}
 
160
#      )
 
161
 
 
162
          ADD_CUSTOM_COMMAND(OUTPUT ${_src}
 
163
         COMMAND ${CMAKE_COMMAND}
 
164
         ARGS
 
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
 
169
         DEPENDS ${_header}
 
170
      )
 
171
 
 
172
      ADD_CUSTOM_COMMAND(OUTPUT ${_moc}
 
173
         COMMAND moc
 
174
         ARGS ${_header} -o ${_moc}
 
175
         DEPENDS ${_header}
 
176
      )
 
177
 
 
178
      SET(${_sources} ${${_sources}} ${_src} ${_moc} )
 
179
 
 
180
   ENDFOREACH (_current_FILE)
 
181
ENDMACRO(KDE_ADD_UI_FILES)
 
182
 
 
183
MACRO(KDE_AUTOMOC)
 
184
   SET(_matching_FILES )
 
185
   FOREACH (_current_FILE ${ARGN})
 
186
      IF (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE})
 
187
 
 
188
         FILE(READ ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE} _contents)
 
189
 
 
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)
 
197
 
 
198
         STRING(REGEX MATCHALL "#include +[^ ]+\\.moc[\">]" _match "${_contents}")
 
199
         IF(_match)
 
200
            FOREACH (_current_MOC_INC ${_match})
 
201
               STRING(REGEX MATCH "[^ <\"]+\\.moc" _current_MOC "${_current_MOC_INC}")
 
202
 
 
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})
 
207
 
 
208
               ADD_CUSTOM_COMMAND(OUTPUT ${_moc}
 
209
                  COMMAND moc
 
210
                  ARGS ${_header} -o ${_moc}
 
211
                  DEPENDS ${_header}
 
212
               )                                                      
 
213
 
 
214
               ADD_FILE_DEPENDANCY(${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE} ${_moc})
 
215
 
 
216
            ENDFOREACH (_current_MOC_INC)
 
217
         ENDIF(_match)
 
218
 
 
219
      ENDIF (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE})
 
220
   ENDFOREACH (_current_FILE)
 
221
ENDMACRO(KDE_AUTOMOC)
 
222
 
 
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")
 
227
 
 
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}")
 
233
                                                                                                                             
 
234
      SET(_icon_GROUP "actions")
 
235
      
 
236
      IF(${_group} STREQUAL "mime")
 
237
         SET(_icon_GROUP  "mimetypes")
 
238
      ENDIF(${_group} STREQUAL "mime")                    
 
239
      
 
240
      IF(${_group} STREQUAL "filesys")
 
241
         SET(_icon_GROUP  "filesystems")
 
242
      ENDIF(${_group} STREQUAL "filesys")                    
 
243
      
 
244
      IF(${_group} STREQUAL "device")
 
245
         SET(_icon_GROUP  "devices")
 
246
      ENDIF(${_group} STREQUAL "device")                    
 
247
 
 
248
      IF(${_group} STREQUAL "app")
 
249
         SET(_icon_GROUP  "apps")
 
250
      ENDIF(${_group} STREQUAL "app")                    
 
251
 
 
252
      IF(${_group} STREQUAL "action")
 
253
         SET(_icon_GROUP  "actions")
 
254
      ENDIF(${_group} STREQUAL "action")                    
 
255
      
 
256
#      MESSAGE(STATUS "icon: ${_current_ICON} size: ${_size} group: ${_group} name: ${_name}" )                            
 
257
      
 
258
      FILE(APPEND install_icons.cmake "CONFIGURE_FILE( ${_current_ICON} ${CMAKE_INSTALL_PREFIX}/share/icons/${_theme}/${_size}x${_size}/${_icon_GROUP}/${_name} COPYONLY) \n")
 
259
      
 
260
   ENDFOREACH (_current_ICON)
 
261
ENDMACRO(KDE_INSTALL_ICONS _theme)
 
262
 
 
263
MACRO(KDE_PLACEHOLDER)
 
264
ENDMACRO(KDE_PLACEHOLDER)
 
265