CMakeLists.txt 18.5 KB
Newer Older
1
2
3
4
# Force minimal cmake version
# Required 3.1 to set C++11 
cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)

Jan Möbius's avatar
Jan Möbius committed
5
6
7
8
9
10
11
file(SHA512 ${CMAKE_SOURCE_DIR}/CMakeLists.txt HASH_TOPLEVEL_CMAKEFILE)
file(SHA512 ${CMAKE_SOURCE_DIR}/OpenFlipper/cmake/CMakeLists.txt HASH_LATEST_CMAKEFILE)

if ( NOT ${HASH_TOPLEVEL_CMAKEFILE} EQUAL ${HASH_LATEST_CMAKEFILE} ) 
  message(WARNING "WARNING! Possibly Outdated toplevel CMakeLists.txt. Please update the toplevel copy by the file OpenFlipper/cmake/CMakeLists.txt .")
endif()

12
13
14
15
16
# Convenience checks for problems
if(EXISTS ${CMAKE_SOURCE_DIR}/libs_required/OpenMesh)
  message(FATAL_ERROR "Directory libs_required/OpenMesh has been moved to OpenFlipper/libs_required/OpenMesh! Please remove the old directory if it's still there!")
endif()

17
# Set and enforce C++-11 flags
Jan Möbius's avatar
Jan Möbius committed
18
set( CMAKE_CXX_STANDARD_REQUIRED TRUE )
19
set( CMAKE_CXX_STANDARD 11 )
20

Jan Möbius's avatar
Jan Möbius committed
21
22
# ACG Environment default settings
# This is ugly but currently we need to work around the default installed 5.3 on debian
Jan Möbius's avatar
Jan Möbius committed
23
if ( EXISTS /ACG/acgdev/gcc-4.9-x86_64/qt-5.6.0/5.6/gcc_64/ )
Jan Möbius's avatar
Jan Möbius committed
24
  # Default to this install path for QT%_INSTALL_DIR
Jan Möbius's avatar
Jan Möbius committed
25
  set (QT5_INSTALL_PATH /ACG/acgdev/gcc-4.9-x86_64/qt-5.6.0/5.6/gcc_64/ CACHE PATH "Qt5 install path set for ACG environment" )
Jan Möbius's avatar
Jan Möbius committed
26
27
endif()

28
29
30
if ( WIN32 )
  # This is the base directory for windows library search used in the finders we shipp.
  set(CMAKE_WINDOWS_LIBS_DIR "c:/libs" CACHE STRING "Default Library search dir on windows." )
Jan Möbius's avatar
Jan Möbius committed
31
endif()
32

33
34
if (NOT CMAKE_BUILD_TYPE)
  message(STATUS "No build type selected, default to Release")
35
  set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE)
36
37
endif()

Jan Möbius's avatar
Jan Möbius committed
38
39

IF ( APPLE )
40
41
42
	IF(CMAKE_BUILD_TYPE MATCHES Debug)
	    message(WARNING "WARNING: Mac Debug mode might mix debug and release libraries (Webkit, ...), which causes strange errors. If you use ports to provide qt, you might want to disable Qt debug libraries to make sure only release qt libraries are linked to OpenFlippers debug build.")
	ENDIF(CMAKE_BUILD_TYPE MATCHES Debug)
Jan Möbius's avatar
Jan Möbius committed
43
44
45
endif()


46
47
project (OpenFlipper)

48
49
50
51
52
53
54
55
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
	if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "6.0" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "4.9" OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL "4.9")
		message(WARNING "Your version of GCC contains an optimizer bug. Please verify that you do not use -O3!")
		string(REPLACE "-O3" "-O2" CMAKE_CXX_FLAGS_RELEASE_NEW "${CMAKE_CXX_FLAGS_RELEASE}")
		set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE_NEW}" CACHE STRING "" FORCE)
	endif()
endif()

56
# add our macro directory to cmake search path
57
58
59
60
set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/OpenFlipper/cmake)

# Include some of our OpenFlipper cmake macros
include(OpenFlipper_common)
61

62
63
64
65
66
67
68
# search for more macro directories in Package-* folders
file (
  GLOB _more_macro_directories
       "${CMAKE_SOURCE_DIR}/Package-*/cmake"
)
set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${_more_macro_directories})

Jan Möbius's avatar
Jan Möbius committed
69
70
71
72
73
74
75
# ========================================================================
# QT Setup 
# ========================================================================

# Qt setup
include(ACGQt)

76
acg_qt5 ()
Jan Möbius's avatar
Jan Möbius committed
77
78

if (NOT QT5_FOUND)
79
  message(FATAL_ERROR "Could not found any QT Version. Please specify QT5_INSTALL_PATH (path to bin and include dir) to build with QT5")
Jan Möbius's avatar
Jan Möbius committed
80
81
endif()

82
83
84
85
set (OF_MAX_QT_VERSION "5.6.0")

if (${Qt5Core_VERSION_STRING} STRGREATER ${OF_MAX_QT_VERSION})
  message(WARNING "Detected QT Version higher than ${OF_MAX_QT_VERSION}!\n" "OpenFlipper has not been tested with this QT Version.")
Jan Möbius's avatar
Jan Möbius committed
86
87
88
89
90
endif()

# ========================================================================
# ========================================================================

91
92
# include our cmake files
include (ACGCommon)
93
include (MSVCMacros)
94
95
96

acg_get_version (OpenFlipper)

97
# ========================================================================
98
# Branding 
99
100
# ========================================================================

101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# search all branding dirs in the packages and in toplevel
file (
  GLOB _local_branding_in
  RELATIVE "${CMAKE_SOURCE_DIR}"
           "${CMAKE_SOURCE_DIR}/branding"
           "${CMAKE_SOURCE_DIR}/Package-*/branding"
)

# Get number of found branding dirs
list(LENGTH _local_branding_in branding_dir_count)

# Check if we found at least one branding directory
if (  ${branding_dir_count} GREATER 0 )

  list(GET _local_branding_in 0 BRANDING_DIRECTORY_TMP)
  set( BRANDING_DIRECTORY "${CMAKE_SOURCE_DIR}/${BRANDING_DIRECTORY_TMP}" CACHE PATH "Path to the branding files")

  if ( ${branding_dir_count} GREATER 1 )
    message(WARNING "Found multiple branding dirs in : ${_local_branding_in}")
    message(WARNING "Using only first branding directory: ${BRANDING_DIRECTORY}")    
  endif()
  
elseif()
  set( BRANDING_DIRECTORY "branding" CACHE PATH "Path to the branding files")

endif()

if ( EXISTS ${BRANDING_DIRECTORY}/branding.cmake )
	include(${BRANDING_DIRECTORY}/branding.cmake)
130
131
endif()

132
133
134
135
136
137
if ( EXISTS ${BRANDING_DIRECTORY}/branding.h )
  set( BRANDING_HEADER true CACHE String "Indicate there is a branding.h inside the branding folder that should be included.")
endif()


#Initialize with defaults, if not already set via branding cmake file
138
139
140
set( OPENFLIPPER_PRODUCT_STRING "OpenFlipper" CACHE String "Product string used e.g. to determine the config file path. Should only contain alphanumeric characters (no spaces)." )
set( OPENFLIPPER_PRODUCT_NAME "OpenFlipper" CACHE String "Product name used in all visible places (e.g. about box)." )

141
142
143
144
if (BRANDING_HEADER)
add_definitions(-DBRANDING_HEADER)
endif ()

145
146
147
148
149
150
add_definitions(-DPRODUCT_STRING=${OPENFLIPPER_PRODUCT_STRING})
add_definitions(-DPRODUCT_NAME=${OPENFLIPPER_PRODUCT_NAME})

# ========================================================================
# ========================================================================

151
152
153
154
155
include (package)
include (ACGOutput)

acg_openmp ()

Jan's avatar
Jan committed
156
# check for OpenGL, GLEW and GLUT as our required dependencies
157
158
159
160
161
find_package (OpenGL)
if (NOT OPENGL_FOUND)
  message (FATAL_ERROR "OpengGL not found!")
endif ()

Jan's avatar
Jan committed
162
163
164
165
166
find_package (GLEW)
if (NOT GLEW_FOUND)
  message (FATAL_ERROR "GLEW not found!")
endif ()

167
168
169
170
find_package (GLUT)
if (NOT GLUT_FOUND)
  message (FATAL_ERROR "GLUT not found!")
endif ()
171
172
173
174

# using the internal openmesh delivered by the svn repo (default) or use some external installation
set (USE_INTERNAL_OPENMESH ON CACHE BOOL "Use and build internal version of OpenMesh found in libs_required")

175
176
177
178
179
180
# enable/disable openmesh warnings
set(NO_DECREMENT_DEPRECATED_WARNINGS OFF CACHE BOOL "Disables all deprecated warnings warning about decrement operations on normal circulators.")
if(NO_DECREMENT_DEPRECATED_WARNINGS)
  add_definitions( -DNO_DECREMENT_DEPRECATED_WARNINGS )
endif()

Jan Möbius's avatar
Jan Möbius committed
181
182
find_package(ACG)

Jan Möbius's avatar
Jan Möbius committed
183
# OpenMesh is a dependent project (in libs_required) so no finder is needed.
184
185
186
187
if (NOT USE_INTERNAL_OPENMESH)
  find_package (OpenMesh REQUIRED)
endif()

188
189
find_package (OpenVolumeMesh)
if (NOT OPENVOLUMEMESH_FOUND)
190
    message (WARNING "OpenVolumeMesh not found, proceeding without it!")
191
endif ()
192

193

194
195
196
197
# ========================================================================
# Configure the executables path for tests
# ========================================================================
if (APPLE)
198
  SET( OPENFLIPPER_EXECUTABLE "${CMAKE_BINARY_DIR}/Build/OpenFlipper.app/Contents/MacOS/${OPENFLIPPER_PRODUCT_STRING}" )
199
elseif( WIN32 )
200
  SET( OPENFLIPPER_EXECUTABLE "${CMAKE_BINARY_DIR}/Build/${OPENFLIPPER_PRODUCT_STRING}.exe" )
201
else()
202
  SET( OPENFLIPPER_EXECUTABLE "${CMAKE_BINARY_DIR}/Build/bin/${OPENFLIPPER_PRODUCT_STRING}" )
203
endif()
204
205
206
SET(OPENFLIPPER_TEST_FILES    ${CMAKE_BINARY_DIR}/tests/globalTestFiles )
SET(OPENFLIPPER_TEST_RESULTS  ${CMAKE_BINARY_DIR}/tests/testResults )
SET(OPENFLIPPER_TEST_BINARIES ${CMAKE_BINARY_DIR}/tests/testBinaries )
207

208
209
enable_testing()

210
# ========================================================================
Matthias Möller's avatar
Matthias Möller committed
211
# Build all additional libraries
212
213
# ========================================================================

214
215
216
add_subdirectory (OpenFlipper/libs_required/OpenMesh)
add_subdirectory (OpenFlipper/libs_required/ACG)

Matthias Möller's avatar
Matthias Möller committed
217
# search all libs in the libs directory
Jan Möbius's avatar
Jan Möbius committed
218
219
# in Packages, types, ...
# (required and optional libraries )
220
221
222
file (
  GLOB _local_libs_in
  RELATIVE "${CMAKE_SOURCE_DIR}"
223
           "${CMAKE_SOURCE_DIR}/libs_required/*/CMakeLists.txt"
Jan Möbius's avatar
Jan Möbius committed
224
           "${CMAKE_SOURCE_DIR}/libs/*/CMakeLists.txt"
Jan Möbius's avatar
Jan Möbius committed
225
           "${CMAKE_SOURCE_DIR}/Type-*/libs/*/CMakeLists.txt"
226
           "${CMAKE_SOURCE_DIR}/Package-*/libs/*/CMakeLists.txt"
227
228
)

Jan Möbius's avatar
Jan Möbius committed
229
230
231
232
set( REMAINING_LOCAL_LIBS "" )

# Special Comiso case:
# The library has to be configured first
233
foreach (_localLib ${_local_libs_in})
Jan Möbius's avatar
Jan Möbius committed
234
235
  if ( "${_localLib}" MATCHES .*CoMISo.* )
    get_filename_component (_local_lib_dir ${_localLib} PATH)
236
237
238
239
240
241
242
    if ( NOT DEFINED LIB_COMISO_BUILD )
      set( LIB_COMISO_BUILD true CACHE BOOL "Enable or disable build of COMISO Library" )
    endif()

    if ( LIB_COMISO_BUILD )
      add_subdirectory (${CMAKE_SOURCE_DIR}/${_local_lib_dir})
    endif()
Jan Möbius's avatar
Jan Möbius committed
243
  else()
244
245
246
    if ( NOT "${_localLib}" MATCHES OpenMesh OR USE_INTERNAL_OPENMESH)
      LIST(APPEND REMAINING_LOCAL_LIBS ${_localLib})
    endif()
Jan Möbius's avatar
Jan Möbius committed
247
248
249
250
251
252
  endif()
endforeach ()


# add all found libs to the build
foreach (_localLib ${REMAINING_LOCAL_LIBS})
253

254
  get_filename_component (_local_lib_dir ${_localLib} PATH)
255
256
257

  # If the library is in the required folder, we have to build it anyway, so
  # detect it here
Matthias Möller's avatar
Matthias Möller committed
258
  SET(REQUIRED FALSE)
259
260
261
262
263
264
265
  if ( _localLib MATCHES ".*libs_required.*" )
    SET(REQUIRED TRUE )
  endif()

  # Extract upper case library dir name for the human readable entries in the cmake config
  string(TOUPPER ${_local_lib_dir} _local_lib_dir_upper)
  string(REGEX REPLACE "LIBS[/\\]" "" _local_lib_dir_upper ${_local_lib_dir_upper} )
Matthias Möller's avatar
Matthias Möller committed
266

267
268
269
270
271
272
  # Only generate setting if the lib is not required (otherwise, we will always build it)
  if ( NOT DEFINED LIB_${_local_lib_dir_upper}_BUILD AND NOT REQUIRED)
      set( LIB_${_local_lib_dir_upper}_BUILD true CACHE BOOL "Enable or disable build of ${_local_lib_dir_upper} Library" )
  endif()

  # Build if this library is required or if it is enabled
Jan Möbius's avatar
Jan Möbius committed
273
  if ( LIB_${_local_lib_dir_upper}_BUILD OR REQUIRED)
274
275
    add_subdirectory (${CMAKE_SOURCE_DIR}/${_local_lib_dir})
  endif()
276
277
endforeach ()

278
279
280
# Group the external libraries in a folder libs_required
GROUP_PROJECT(OpenMeshTools libs_required)
GROUP_PROJECT(OpenMeshCore libs_required)
281
GROUP_PROJECT(ACG libs_required)
282
GROUP_PROJECT(OpenVolumeMesh libs_required)
Jan Möbius's avatar
Jan Möbius committed
283
284

if( DOXYGEN_FOUND )
285
GROUP_PROJECT(doc-install Documentation)
Jan Möbius's avatar
Jan Möbius committed
286
endif()
287

Jan Möbius's avatar
Jan Möbius committed
288
289
290
291
292
# ========================================================================
# Core Library Components (Except the Core application)
# ========================================================================
add_subdirectory (OpenFlipper/PluginLib)

Jan Möbius's avatar
Jan Möbius committed
293
294
295
296
297
298
299
300
301
302
303
304
305
306
# ========================================================================
# Build DataTypes
# ========================================================================

# Search for all available data types
file (
  GLOB _data_types
  RELATIVE "${CMAKE_SOURCE_DIR}"
           "${CMAKE_SOURCE_DIR}/Type-*/ObjectTypes/*"
           "${CMAKE_SOURCE_DIR}/Package-*/Type-*/ObjectTypes/*"
)

# add all found libs to the build
foreach (DATATYPE_DIR ${_data_types})
307
308
  if (EXISTS ${CMAKE_SOURCE_DIR}/${DATATYPE_DIR}/CMakeLists.txt)
    add_subdirectory(${DATATYPE_DIR})
Jan Möbius's avatar
Jan Möbius committed
309

310
311
312
313
    # Extract Name of type from directory
    string(REGEX MATCH "[^/\\]*$" TYPENAME ${DATATYPE_DIR})
    string(TOUPPER ${TYPENAME} TYPENAME )
    list(APPEND TYPE_LIST ${TYPENAME})
Jan Möbius's avatar
Jan Möbius committed
314

315
316
    # Binary is only for the ui files generated there. Maybe a better solution can be found!
    set(${TYPENAME}_INCLUDE ${CMAKE_SOURCE_DIR}/${DATATYPE_DIR}/../../ ${CMAKE_BINARY_DIR}/${DATATYPE_DIR}/ )
317
 endif()
Jan Möbius's avatar
Jan Möbius committed
318
319
320
321
322
323
324
325
326
327
328
329
330
331
endforeach()

# info header for Available data types
acg_color_message ("\n${_escape}[40;37m************************************************************${_escape}[0m")
acg_color_message ("${_escape}[40;37m* Available OpenFlipper Types:                             *${_escape}[0m")
acg_color_message ("${_escape}[40;37m************************************************************${_escape}[0m")
acg_color_message (" ")

foreach (DATATYPE ${TYPE_LIST})
  acg_color_message ("${DATATYPE}")
endforeach()

acg_color_message (" ")

Jan Möbius's avatar
Jan Möbius committed
332
333
334
# ========================================================================
# Tests
# ========================================================================
Jan Möbius's avatar
Jan Möbius committed
335
add_subdirectory (OpenFlipper/tests)
Jan Möbius's avatar
Jan Möbius committed
336
337
338
339
340
341
342
343
344

# ========================================================================
# Documentation generators
# ========================================================================

# Create dirs to make doxygen happy
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_DATADIR}/Doc )
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_DATADIR}/Help )

345
# Add the documentation targets
Jan Möbius's avatar
Jan Möbius committed
346
347
348
349
350
add_subdirectory (OpenFlipper/Documentation/DeveloperTarget)
add_subdirectory (OpenFlipper/Documentation/DeveloperQtHelpTarget)
add_subdirectory (OpenFlipper/Documentation/UserTarget)
add_subdirectory (OpenFlipper/Documentation/UserQtHelpTarget)

351
352
353
354
# ========================================================================
# PolyLine extension special case
# ========================================================================

Isaak Lim's avatar
Isaak Lim committed
355
356
357
find_package (MeshIntegration)

if (MESH_INTEGRATION_FOUND)
358
359
360
  add_definitions( -DEXTENDED_POLY_LINE )
endif()

361
362
363
364
365
366
367
# ========================================================================
# License Manager
# ========================================================================
if ( NOT DEFINED OPENFLIPPER_ENABLE_LICENSE_MANAGER )
  set( OPENFLIPPER_ENABLE_LICENSE_MANAGER true CACHE BOOL "Enable or disable license management in all plugins" )
endif()

368
369
370
371
if ( NOT DEFINED OPENFLIPPER_ENABLE_LICENSE_KEY_GENERATOR )
  set( OPENFLIPPER_ENABLE_LICENSE_KEY_GENERATOR true CACHE BOOL "Enable or disable building the license key generators in all plugins" )
endif()

372
373
374
375
376
377
378
379
380
381
382
383
384
# ========================================================================
# Apple Mac Store Flags
# ========================================================================
if ( APPLE AND NOT DEFINED OPENFLIPPER_BUILD_APP_STORE_COMPLIANT )
  set( OPENFLIPPER_BUILD_APP_STORE_COMPLIANT true CACHE BOOL "Enable app store compliant build (No internal update, different paths,...)" )
endif()

# ========================================================================
# Plugins
# ========================================================================

# start with an empty plugin list
acg_set (OPENFLIPPER_PLUGINS "")
385
386
acg_set (OPENFLIPPER_STATIC_PLUGINS "")
acg_set (OPENFLIPPER_STATIC_PLUGIN_FILES "")
387
acg_set (OPENFLIPPER_STATIC_PLUGIN_NAMES "")
388

389
390
391
392
393
394
foreach (package ${PREFOUND_PACKAGES})
find_package(${package})
endforeach ()

SET (LOADED_PACKAGES ${PREFOUND_PACKAGES})
LIST (APPEND LOADED_PACKAGES "Doxygen")
395
396
# add plugins
of_add_plugins ()
397
398
list (REMOVE_DUPLICATES LOADED_PACKAGES)
set (PREFOUND_PACKAGES "${LOADED_PACKAGES}" CACHE INTERNAL "List of packages that will get found at global scope so they don't get found over and over inside the individual packages.")
399

Jan Möbius's avatar
Jan Möbius committed
400
401
402
# ========================================================================
# Build core as we now know all dependencies
# ========================================================================
403

Jan Möbius's avatar
Jan Möbius committed
404
add_subdirectory (OpenFlipper/CoreApp)
405

406
407
408
409
410
411
412

# ========================================================================
# Bundle generation
# ========================================================================

if (WIN32 )

Matthias Möller's avatar
Matthias Möller committed
413
  # Plugins collected a list of required libdirs for getting
414
415
  # their DLLS on windows:
  get_property( WINDOWS_COPY_LIBDIRS GLOBAL PROPERTY WINDOWS_LIBRARY_DIR_LIST )
Matthias Möller's avatar
Matthias Möller committed
416

417
418
419
420
  if ( WINDOWS_COPY_LIBDIRS )
    list(REMOVE_DUPLICATES WINDOWS_COPY_LIBDIRS)
  endif()

421
422
423
424
  
  # workaround for VS2018 where the OpenMP vcomp90.dll seems to be missing from the path
  if ( CMAKE_GENERATOR MATCHES "^Visual Studio 9.*" )
    INCLUDE(InstallRequiredSystemLibraries)
425
    set ( OMP_PATH "${MSVC90_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC90.OPENMP/;${MSVC90_REDIST_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.VC90.DebugOpenMP/" )
426
427
  endif()

428
429
430
431
432
433
434
435
  # prepare bundle generation cmake file and add a build target for it
  configure_file ("${CMAKE_SOURCE_DIR}/OpenFlipper/cmake/fixbundle.cmake.win.in"
     "${CMAKE_BINARY_DIR}/fixbundle.win.cmake" @ONLY IMMEDIATE)

  add_custom_target (fixbundle ALL
    COMMAND ${CMAKE_COMMAND} -P "${CMAKE_BINARY_DIR}/fixbundle.win.cmake" )

  # let bundle generation depend on all targets
436
  add_dependencies (fixbundle ${OPENFLIPPER_PRODUCT_STRING} OpenFlipperPluginLib ${OPENFLIPPER_PLUGINS})
Matthias Möller's avatar
Matthias Möller committed
437

438
439
endif(WIN32)

440
# ========================================================================
441
# Custom command to create a bundle and a package on mac
442
# ========================================================================
443

444
445
446
447
448
449
450
if ( APPLE )

   # Configuration option about fixbundle
   if ( APPLE AND NOT DEFINED OPENFLIPPER_CALL_FIX_BUNDLE )
     set( OPENFLIPPER_CALL_FIX_BUNDLE false CACHE BOOL "After building OpenFlipper, a bundle creation step is executed (which copies all dependencies into the bundle) to create a valid MacOs Bundle. This step is only necessary if creating a package." )
   endif()

451
452
  # prepare bundle generation cmake file and add a build target for it
  configure_file ("${CMAKE_SOURCE_DIR}/OpenFlipper/cmake/fixbundle.cmake.in"
Matthias Möller's avatar
Matthias Möller committed
453
     "${CMAKE_BINARY_DIR}/fixbundle.cmake" @ONLY IMMEDIATE)
454
455

  # Fixbundle is only necessary, when we wan't a shippable package.
Matthias Möller's avatar
Matthias Möller committed
456
  # Otherwise the original rpaths are used
457
  if ( OPENFLIPPER_CALL_FIX_BUNDLE )
Matthias Möller's avatar
Matthias Möller committed
458
459
    # Call fixbundle every time
    add_custom_target (fixbundle ALL
460
461
462
463
      COMMAND ${CMAKE_COMMAND} -P "${CMAKE_BINARY_DIR}/fixbundle.cmake"
    )
  else()
    # Call fixbundle only as a dependency
Matthias Möller's avatar
Matthias Möller committed
464
    add_custom_target (fixbundle
465
466
467
468
      COMMAND ${CMAKE_COMMAND} -P "${CMAKE_BINARY_DIR}/fixbundle.cmake"
    )
  endif()

469
  # let bundle generation depend on all targets
Jan Möbius's avatar
Jan Möbius committed
470
  add_dependencies (fixbundle ${OPENFLIPPER_PRODUCT_STRING} OpenFlipperPluginLib ${OPENFLIPPER_PLUGINS})
471
472
473
474

  # install bundle
  install (DIRECTORY ${CMAKE_BINARY_DIR}/Build/OpenFlipper.app DESTINATION .
           USE_SOURCE_PERMISSIONS)
475

476
  # Extra target for building an OpenFlipper package on mac
477
478
479
480
481
482
483
484
485
486
  # Call fixbundle first
  # afterwards we call make package as an external command, as we can't
  # add a dependency on build in targets of cake
  add_custom_target (OpenFlipper_package
    DEPENDS fixbundle
    COMMAND make package
  )

endif()

487
488
489
490
491
492
493
494
# ========================================================================
# Output log information
# ========================================================================

# display results
acg_print_configure_header (OPENFLIPPER "OpenFlipper")
of_print_plugin_stats ()
acg_print_configure_footer ()