CMakeLists.txt 16.1 KB
Newer Older
1
2
3
4
include (ACGCommon)

include_directories (
  ..
5
  ${OPENMESH_INCLUDE_DIRS}
6
7
8
9
  ${CMAKE_SOURCE_DIR}
  ${CMAKE_CURRENT_SOURCE_DIR}
  ${CMAKE_CURRENT_BINARY_DIR}
  ${OPENGL_INCLUDE_DIR}
10
  ${GLEW_INCLUDE_DIR}
11
12
13
14
15
16
17
18
19
20
21
  ${GLUT_INCLUDE_DIR}
)

# Linking for apple is special here as the linker pulls in the dependencies, we have to set them like in PluginLib!
if( APPLE )

  # search all ObjectTypes in the ObjectType directory for additional build information
  file (
     GLOB _plugin_buildinfos
     RELATIVE "${CMAKE_SOURCE_DIR}"
     "${CMAKE_SOURCE_DIR}/ObjectTypes/*/CMakeLists.txt"
Jan Möbius's avatar
Jan Möbius committed
22
     "${CMAKE_SOURCE_DIR}/Package*/ObjectTypes/*/CMakeLists.txt"
23
24
25
26
27
28
29
30
31
  )


  # include all cmake files fouund for objecttypes here
  foreach ( _buildInfo ${_plugin_buildinfos})
    include ("${CMAKE_SOURCE_DIR}/${_buildInfo}")
  endforeach ()

  link_directories (
32
    ${GLEW_LIBRARY_DIR}
33
34
    ${ADDITIONAL_PLUGINLIB_LINK_DIRS}
  )
35
36
37
38
39

else (APPLE)
   link_directories (
      ${GLEW_LIBRARY_DIR}
   )
40
41
endif(APPLE)

42
43
44
45
46
47
if (WIN32)
	SET(WIN_EXTRA_DIRS "../StackWalker" )
else(WIN32)
	SET(WIN_EXTRA_DIRS "")
endif(WIN32)

48
# source code directories
49
50
set (directories 
  .. 
51
52
53
54
55
56
  ../Core
  ../Logging
  ../Scripting
  ../Scripting/scriptPrototypes
  ../Scripting/scriptWrappers
  ../SimpleOpt
57
  ../widgets/aboutWidget 
58
59
  ../widgets/addEmptyWidget
  ../widgets/loggerWidget
60
  ../widgets/coreWidget 
61
62
63
64
65
66
67
68
69
  ../widgets/helpWidget
  ../widgets/processManagerWidget
  ../widgets/loadWidget
  ../widgets/optionsWidget
  ../widgets/PluginDialog
  ../widgets/viewModeWidget
  ../widgets/videoCaptureDialog
  ../widgets/snapshotDialog
  ../widgets/stereoSettingsWidget
70
  ../widgets/postProcessorWidget
Jan Möbius's avatar
Jan Möbius committed
71
  ../widgets/rendererWidget
72
  ${WIN_EXTRA_DIRS}
73
74
75
76
77
78
79
80
81
82
83
)

# collect all header,source and ui files
acg_append_files (headers "*.hh" ${directories})
acg_append_files (sources "*.cc" ${directories})
acg_append_files (ui "*.ui" ${directories})

# remove template cc files from source file list
acg_drop_templates (sources)

# genereate uic and moc targets
Matthias Möller's avatar
Matthias Möller committed
84
85
86
87
if (QT5_FOUND)
  acg_qt5_autouic (uic_targets ${ui})
  acg_qt5_automoc (moc_targets ${headers})
else ()
88
89
acg_qt4_autouic (uic_targets ${ui})
acg_qt4_automoc (moc_targets ${headers})
Matthias Möller's avatar
Matthias Möller committed
90
endif()
91

92
93
set(RC_SRC "")

94
if ( EXISTS ${BRANDING_DIRECTORY}/branding.qrc )
95
        if ( QT5_FOUND )
96
            QT5_ADD_RESOURCES(BRANDING_RC_SRC "${BRANDING_DIRECTORY}/branding.qrc")
97
98
            list(APPEND RC_SRC ${BRANDING_RC_SRC})
        else()
99
    	    QT4_ADD_RESOURCES(BRANDING_RC_SRC "${BRANDING_DIRECTORY}/branding.qrc")
100
101
  	    list(APPEND RC_SRC ${BRANDING_RC_SRC})
        endif()
102
103
endif()

104
105
106
107
108
109
110
111
112
113
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/static_plugins.cc" "#include <QtPlugin>\n\n")

foreach (plugin ${OPENFLIPPER_STATIC_PLUGIN_NAMES})
file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/static_plugins.cc" "Q_IMPORT_PLUGIN(${plugin});\n")
endforeach()

file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/static_plugins.cc" "\nnamespace cmake {\n")

file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/static_plugins.cc" "\nconst char *static_plugins = \"\"\n")

114
foreach (plugin ${OPENFLIPPER_STATIC_PLUGIN_FILES})
115
  file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/static_plugins.cc" "\"${plugin}\\n\"\n")
116
endforeach()
117

118
119
120
121
file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/static_plugins.cc" ";\n} /* namespace cmake */\n")

list(APPEND RC_SRC "${CMAKE_CURRENT_BINARY_DIR}/static_plugins.cc")

122
123
if (WIN32)
  # add app icon rc file to windows build
124
  acg_add_executable (${OPENFLIPPER_PRODUCT_STRING} WIN32 ${CMAKE_CURRENT_SOURCE_DIR}/CoreApp.rc ${uic_targets} ${sources} ${headers} ${moc_targets} ${RC_SRC})
125
  # link to qtmain library to get WinMain function for a non terminal app
126
  target_link_libraries (${OPENFLIPPER_PRODUCT_STRING} ${QT_QTMAIN_LIBRARY})
127
128
elseif (APPLE)
  # generate bundle on mac
129
  acg_add_executable (${OPENFLIPPER_PRODUCT_STRING} MACOSX_BUNDLE ${uic_targets} ${sources} ${headers} ${moc_targets} ${RC_SRC})
130
else ()
131
  acg_add_executable (${OPENFLIPPER_PRODUCT_STRING} ${uic_targets} ${sources} ${headers} ${moc_targets} ${RC_SRC})
132
133
endif ()

Jan Möbius's avatar
Jan Möbius committed
134
# Mark this build part as building OpenFlippers Core
135
136
add_definitions(-DOPENFLIPPERCORE )

137
138
# Build app store compliant
if ( OPENFLIPPER_BUILD_APP_STORE_COMPLIANT )
Jan Möbius's avatar
Jan Möbius committed
139
   add_definitions( -DOPENFLIPPER_BUILD_APP_STORE_COMPLIANT )
140
141
142
endif()


Jan Möbius's avatar
Jan Möbius committed
143
144
if (WIN32)
  add_definitions( -DACGDLL
145
146
147
148
                   -DUSEACG 
                   -DPLUGINLIBDLL
                   -DUSEPLUGINLIBDLL
                   )
Jan Möbius's avatar
Jan Möbius committed
149
endif ()
150

151
152
153
154
155
156

set ( CATCH_SIGSEGV True CACHE BOOL "Whether SIGSEGV should be catched. Set this to false in order to get a core dump with usable call stack. Set to true in order to get a stack trace at the time of crash." )
if (NOT CATCH_SIGSEGV)
    add_definitions( -DNO_CATCH_SIGSEGV )
endif()

157
158
159
160
161
162
163
164
165
166
if (WIN32)
  set ( WIN_GET_DEBUG_CONSOLE False CACHE BOOL "Whether a debug console should be visible on windows" )
  if (WIN_GET_DEBUG_CONSOLE)
      add_definitions( -DWIN_GET_DEBUG_CONSOLE )
  endif()
endif ()




167
168
# ====================================================================================
# Get list of  ll plugin dependencies and handle special ones
169
# where we need to link the library directly into the core to prevent 
170
171
# linker problems
# ====================================================================================
172

173
174
175
176
177
178
# Get the property containing the list of all dependencies of the plugins
# List is created when the plugins are added
get_property( global_dependency_list GLOBAL PROPERTY GLOBAL_PLUGIN_DEPENDENCIES_LIST)

set(COREAPP_ADDITIONAL_LINK_LIBRARIES "")

179
180
181
182
183
184
# Get additional libraries from plugins that should be linked into the core
get_property( global_core_app_libraries GLOBAL PROPERTY GLOBAL_CORE_APP_LIBRARIES)
foreach (_val ${global_core_app_libraries})
  list(APPEND COREAPP_ADDITIONAL_LINK_LIBRARIES ${_val})
endforeach ()

185
186
187
188
# Special Handling for mpi
list( FIND global_dependency_list "MPI" found)
if ( NOT found EQUAL -1 )
  find_package(MPI)
189
190
191
  if ( MPI_FOUND )
    list(APPEND COREAPP_ADDITIONAL_LINK_LIBRARIES  ${MPI_LIBRARIES})
  endif()
192
193
194
195
196
197
endif()

# Special Handling for openni
list( FIND global_dependency_list "OPENNI" found)
if ( NOT found EQUAL -1 )
  find_package(OPENNI)
198
199
200
  if ( OPENNI_FOUND )
    list(APPEND COREAPP_ADDITIONAL_LINK_LIBRARIES  ${OPENNI_LIBRARY})
  endif()
201
202
endif()

203
204
205
206
207
208
209
# use Qwt6 for QT5
if (NOT FORCE_QT4 AND QT5_FOUND)
  find_package(Qwt6)

  if (QWT6_FOUND)
    add_definitions(-DWITH_QWT)
    set(INCLUDE_DIRS ${INCLUDE_DIRS} ${QWT6_INCLUDE_DIRS} )
210
    set(COREAPP_ADDITIONAL_LINK_LIBRARIES ${COREAPP_ADDITIONAL_LINK_LIBRARIES} ${QWT6_LIBRARIES})
211
212
213
  endif()
else()
  find_package(Qwt5)
214

215
216
217
  if(Qwt5_Qt4_FOUND)
    add_definitions(-DWITH_QWT)
    set(INCLUDE_DIRS ${INCLUDE_DIRS} ${Qwt5_INCLUDE_DIR} )
218
    set(COREAPP_ADDITIONAL_LINK_LIBRARIES ${COREAPP_ADDITIONAL_LINK_LIBRARIES} ${Qwt5_Qt4_LIBRARY})
219
  endif()
220
221
222
endif()


223
224
225
226
# ====================================================================================
# Linker Dependencies for Core app
# ====================================================================================

227
target_link_libraries (${OPENFLIPPER_PRODUCT_STRING}
228
  ACG
229
  OpenFlipperPluginLib
230
231
  ${QT_LIBRARIES}
  ${OPENGL_LIBRARIES}
232
  ${GLEW_LIBRARY}
233
  ${GLUT_LIBRARIES}
234
  ${COREAPP_ADDITIONAL_LINK_LIBRARIES}
235
  ${OPENFLIPPER_STATIC_PLUGINS}
236
237
238
239
)

if (APPLE)

240
   if ( EXISTS ${BRANDING_DIRECTORY} )
Jan Möbius's avatar
Jan Möbius committed
241

242
243
     # Take bundle icon from branding dir
     IF ( NOT APPLE_BUNDLE_ICON )
244
        # option to set the used Icon for OpenFlipper
245
        set ( APPLE_BUNDLE_ICON "${BRANDING_DIRECTORY}\\mac\\OpenFlipper_Icon.icns" CACHE FILEPATH "Path to the Bundle Icon" )
246
247
248
249
     ENDIF(NOT APPLE_BUNDLE_ICON )    
 
     # Take plist from branding
     IF ( NOT APPLE_INFO_PLIST )
250
       if ( EXISTS ${BRANDING_DIRECTORY}/mac/Info.plist )
251
         # option to configure the custom Info.plist
252
253
         set ( APPLE_INFO_PLIST "${BRANDING_DIRECTORY}\\mac\\Info.plist" CACHE FILEPATH "Path to the Info.plist file for Bundle" )
       else ( EXISTS ${BRANDING_DIRECTORY}/mac/Info.plist )
254
255
         # option to configure a custum Info.plist but configure with default one
         set ( APPLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/../installer/mac/Info.plist" CACHE FILEPATH "Path to the Info.plist file for Bundle" )
256
       endif( EXISTS ${BRANDING_DIRECTORY}/mac/Info.plist )
257
     ENDIF(NOT APPLE_INFO_PLIST )
258
259
260
261
262

  else()

    IF ( NOT APPLE_BUNDLE_ICON )
        # option to set the used Icon for OpenFlipper
263
264
        if ( EXISTS ${BRANDING_DIRECTORY}/Icons/OpenFlipper_Icon.icns )
          set ( APPLE_BUNDLE_ICON " ${BRANDING_DIRECTORY}/Icons/OpenFlipper_Icon.icns" CACHE FILEPATH "Path to the Bundle Icon" )
265
266
267
        else()
          set ( APPLE_BUNDLE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/../Icons/OpenFlipper_Icon.icns" CACHE FILEPATH "Path to the Bundle Icon" )
        endif()
268
269
    ENDIF(NOT APPLE_BUNDLE_ICON )

Jan Möbius's avatar
Jan Möbius committed
270
271
272
273
274
    IF ( NOT APPLE_INFO_PLIST )
        # option to configure a custum Info.plist but configure with default one
        set ( APPLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/../installer/mac/Info.plist" CACHE FILEPATH "Path to the Info.plist file for Bundle" )
    ENDIF(NOT APPLE_INFO_PLIST )

275
  endif()
276
 
277
  add_custom_command(TARGET ${OPENFLIPPER_PRODUCT_STRING} POST_BUILD                                                              
278
279
    COMMAND ${CMAKE_COMMAND} -E copy_if_different "${APPLE_BUNDLE_ICON}" "${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_DATADIR}/OpenFlipper.icns"            
  )    
280

281
282
283
284
  # create bundle in "Build" directory and set icon
  # no install needed here, because the whole bundle will be installed in the
  # toplevel CMakeLists.txt
  set_target_properties (
285
      ${OPENFLIPPER_PRODUCT_STRING} PROPERTIES
286
287
288
289
       
      RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/Build/"
      RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/Build/"
      RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/Build/"
Jan Möbius's avatar
Jan Möbius committed
290
291
292
      MACOSX_BUNDLE_INFO_STRING "ACG OpenFlipper"
      MACOSX_BUNDLE_ICON_FILE "OpenFlipper.icns"
      MACOSX_BUNDLE_INFO_PLIST ${APPLE_INFO_PLIST}
293
  )  
Jan Möbius's avatar
Jan Möbius committed
294

295
296
297
298
299
300
endif ()

# Translations
set (trans_files ${sources})
list (APPEND trans_files ${ui})
list (APPEND trans_files ${headers})
301
acg_add_translations (${OPENFLIPPER_PRODUCT_STRING} "de_DE" "${trans_files}")
302
303
304
305


# copy all needed files to "Build" directory to allow a direct execution from it
# the copy_after_build macro (common.cmake) copies the whole directory without svn files
306
307
308
309
310
311
312
acg_copy_after_build (${OPENFLIPPER_PRODUCT_STRING} "${CMAKE_CURRENT_SOURCE_DIR}/../Shaders" "${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_DATADIR}/Shaders")
acg_copy_after_build (${OPENFLIPPER_PRODUCT_STRING} "${CMAKE_CURRENT_SOURCE_DIR}/../Textures" "${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_DATADIR}/Textures")
acg_copy_after_build (${OPENFLIPPER_PRODUCT_STRING} "${CMAKE_CURRENT_SOURCE_DIR}/../Scripts" "${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_DATADIR}/Scripts")
acg_copy_after_build (${OPENFLIPPER_PRODUCT_STRING} "${CMAKE_CURRENT_SOURCE_DIR}/../Licenses" "${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_DATADIR}/Licenses")
acg_copy_after_build (${OPENFLIPPER_PRODUCT_STRING} "${CMAKE_CURRENT_SOURCE_DIR}/../Icons" "${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_DATADIR}/Icons")
acg_copy_after_build (${OPENFLIPPER_PRODUCT_STRING} "${CMAKE_CURRENT_SOURCE_DIR}/../Fonts" "${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_DATADIR}/Fonts")
acg_copy_after_build (${OPENFLIPPER_PRODUCT_STRING} "${CMAKE_CURRENT_SOURCE_DIR}/../Documentation/QtHelpResources" "${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_DATADIR}/Help")
313

314
if ( EXISTS ${BRANDING_DIRECTORY} )
315
  if ( WIN32 ) 
316
    acg_copy_after_build (${OPENFLIPPER_PRODUCT_STRING} "${BRANDING_DIRECTORY}/win/Icons" "${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_DATADIR}/Icons")
317
  elseif( APPLE )
318
    acg_copy_after_build (${OPENFLIPPER_PRODUCT_STRING} "${BRANDING_DIRECTORY}/mac/Icons" "${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_DATADIR}/Icons")
319
  elseif()
320
    acg_copy_after_build (${OPENFLIPPER_PRODUCT_STRING} "${BRANDING_DIRECTORY}/linux/Icons" "${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_DATADIR}/Icons")
321
322
323
324
  endif()
endif()


325
if ( APPLE ) 
326
327
  # we need qt_menu.nib in our resources dir so try to get it

328
 if ( EXISTS /opt/local/lib/Resources/qt_menu.nib )
329
  acg_copy_after_build( ${OPENFLIPPER_PRODUCT_STRING} "/opt/local/lib/Resources/qt_menu.nib" "${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_DATADIR}/qt_menu.nib")
Jan Möbius's avatar
Jan Möbius committed
330
 elseif ( EXISTS /usr/bin/qt_menu.nib )
331
   acg_copy_after_build( ${OPENFLIPPER_PRODUCT_STRING} "/usr/bin/qt_menu.nib" "${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_DATADIR}/qt_menu.nib")
332
 elseif ( EXISTS "/opt/local/libexec/qt4-mac/lib/QtGui.framework/Versions/4/Resources/qt_menu.nib" )
333
   acg_copy_after_build( ${OPENFLIPPER_PRODUCT_STRING} "/opt/local/libexec/qt4-mac/lib/QtGui.framework/Versions/4/Resources/qt_menu.nib" "${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_DATADIR}/qt_menu.nib")
334
335
 endif ()

336
337
338
339
340
341
342
343
 # Copy qt plugins into bundle but omit debug libraries when in release mode and vice versa
 acg_unset (_files)
 acg_get_files_in_dir (_files ${QT_PLUGINS_DIR})
 foreach (_file ${_files})
   if ( CMAKE_BUILD_TYPE MATCHES "Release" )

     # In release mode, we don't want debug binaries in the bundle as it could cause crashes due to wrong linking or mixing of debug and release
     if ( NOT _file MATCHES ".*debug.*" )
344
       add_custom_command(TARGET ${OPENFLIPPER_PRODUCT_STRING} POST_BUILD
345
346
347
348
349
         COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_PLUGINS_DIR}/${_file}" "${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_DATADIR}/QtPlugins/${_file}"
       )
     endif()

   else ()
350
     
351
352
     # In debug mode, we don't want release binaries in the bundle as it could cause crashes due to wrong linking or mixing of debug and release
     if ( _file MATCHES ".*debug.*" )
353
       add_custom_command(TARGET ${OPENFLIPPER_PRODUCT_STRING} POST_BUILD
354
355
356
357
358
         COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_PLUGINS_DIR}/${_file}" "${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_DATADIR}/QtPlugins/${_file}"
       )
     endif()

   endif()
359
    
360
361
 endforeach ()

362
363
364
365
366
367
368
369
elseif(WIN32)

 #copy qt plugins to Build directory and configure qt.conf file
 file (GLOB qtplugin_dirs RELATIVE  "${QT_PLUGINS_DIR}"  "${QT_PLUGINS_DIR}/*"  )
 file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/Build/QtPlugins" )
 foreach (qtplugin ${qtplugin_dirs})
	file(COPY "${QT_PLUGINS_DIR}/${qtplugin}" DESTINATION "${CMAKE_BINARY_DIR}/Build/QtPlugins/")
 endforeach ()
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385

endif( APPLE )



if (NOT APPLE)
  # install all needed files
  # the install_dir macro (common.cmake) installs the whole directory without svn files
  # no install for mac needed here, because the whole bundle will be installed in the
  # toplevel CMakeLists.txt
  acg_install_dir ("${CMAKE_CURRENT_SOURCE_DIR}/../Shaders" "${ACG_PROJECT_DATADIR}/Shaders")
  acg_install_dir ("${CMAKE_CURRENT_SOURCE_DIR}/../Textures" "${ACG_PROJECT_DATADIR}/Textures")
  acg_install_dir ("${CMAKE_CURRENT_SOURCE_DIR}/../Scripts" "${ACG_PROJECT_DATADIR}/Scripts")
  acg_install_dir ("${CMAKE_CURRENT_SOURCE_DIR}/../Icons" "${ACG_PROJECT_DATADIR}/Icons")
  acg_install_dir ("${CMAKE_CURRENT_SOURCE_DIR}/../Licenses" "${ACG_PROJECT_DATADIR}/Licenses")
  acg_install_dir ("${CMAKE_CURRENT_SOURCE_DIR}/../Fonts" "${ACG_PROJECT_DATADIR}/Fonts")
386
  #acg_install_dir ("${CMAKE_CURRENT_SOURCE_DIR}/../Doc" "${ACG_PROJECT_DATADIR}/Doc") Disabled as we don't want html docs inside of the binaries
387

388
389
  if ( WIN32 )
    # create qt config file and install it
Matthias Möller's avatar
Matthias Möller committed
390
391
	file(WRITE "${CMAKE_BINARY_DIR}/Build/qt.conf" "[Paths]\nPlugins = QtPlugins")
	install( FILES "${CMAKE_BINARY_DIR}/Build/qt.conf" DESTINATION "${ACG_PROJECT_DATADIR}/" )
392
393
	acg_install_dir ("${CMAKE_BINARY_DIR}/Build/QtPlugins/" "${ACG_PROJECT_DATADIR}/QtPlugins")
  endif(WIN32)
394
  
395
  if ( EXISTS ${BRANDING_DIRECTORY}/win )
396
    if ( WIN32 ) 
397
      acg_install_dir ( "${BRANDING_DIRECTORY}/win" "${ACG_PROJECT_DATADIR}/Icons")
398
399
     endif()
  endif()
400
401
402
403

endif ()


404
if ( EXISTS ${BRANDING_DIRECTORY}/Icons )
405
  # Overwrite generic Icons with branded ones.
406
407
  acg_copy_after_build (${OPENFLIPPER_PRODUCT_STRING} "${BRANDING_DIRECTORY}/Icons" "${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_DATADIR}/Icons")
  acg_install_dir ("${BRANDING_DIRECTORY}/Icons" "${ACG_PROJECT_DATADIR}/Icons")
408
endif()