CMakeLists.txt 5.68 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12
include (ACGCommon)

set ( ADDITIONAL_PLUGINLIB_LIBS "")
set ( ADDITIONAL_PLUGINLIB_INCS "")
set ( ADDITIONAL_PLUGINLIB_COMPILER_FLAGS "")
set ( ADDITIONAL_PLUGINLIB_LINK_DIRS "")

# 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"
13 14
  "${CMAKE_SOURCE_DIR}/Package*/ObjectTypes/*/CMakeLists.txt"

15 16
)

Jan Möbius's avatar
Jan Möbius committed
17
# include all cmake files found for objecttypes here
18 19 20
foreach ( _buildInfo ${_plugin_buildinfos})
  include ("${CMAKE_SOURCE_DIR}/${_buildInfo}")
endforeach ()
21 22 23 24 25 26 27
  
# Find all packages and include their Paths here like the toplevel would be
file(GLOB OF_PACKAGES RELATIVE "${CMAKE_SOURCE_DIR}" "${CMAKE_SOURCE_DIR}/Package*" )

foreach ( OF_PACKAGE ${OF_PACKAGES})
   list(APPEND PACKAGE_INCLUDES "${CMAKE_SOURCE_DIR}/${OF_PACKAGES}")
endforeach ()
28

29 30 31 32 33 34 35 36

# search all lib directories in packages for OpenFlipper
file (
    GLOB PACKAGE_DIRS
      "${CMAKE_SOURCE_DIR}/Package-*"
)


37 38
include_directories (
  ..
39
  ${PACKAGE_DIRS}
40
  ${OPENMESH_INCLUDE_DIRS}
41 42 43 44 45 46
  ${CMAKE_SOURCE_DIR}
  ${CMAKE_CURRENT_SOURCE_DIR}
  ${CMAKE_CURRENT_BINARY_DIR}
  ${OPENGL_INCLUDE_DIR}
  ${GLUT_INCLUDE_DIR}
  ${ADDITIONAL_PLUGINLIB_INCS}
47
  ${PACKAGE_INCLUDES}
48 49 50 51 52 53
)

link_directories (
  ${ADDITIONAL_PLUGINLIB_LINK_DIRS}
)

Jan Möbius's avatar
Jan Möbius committed
54 55 56
#=======================================================
# General defines
#=======================================================
57 58 59 60

# generate dllexport macros on windows
if (WIN32)
  add_definitions (
Matthias Möller's avatar
Matthias Möller committed
61
    -DPLUGINLIBDLL
62 63
    -DACGDLL
    -DUSEACG
64 65 66 67 68 69 70 71
  )
endif ()

# define core version
add_definitions (
    -DCORE_VERSION="${OPENFLIPPER_VERSION}"
)

72 73 74
# Mark this build part as building OpenFLippers Core
add_definitions(-DOPENFLIPPERPLUGINLIB )

Jan Möbius's avatar
Jan Möbius committed
75 76 77 78 79 80
#=======================================================
# Add possibility to debug OpenFlipperSettings
#=======================================================

if ( NOT DEFINED OPENFLIPPER_SETTINGS_DEBUG )
  set( OPENFLIPPER_SETTINGS_DEBUG false CACHE BOOL "Enable or disable debugging of OpenFlipperSettings" )
81
  mark_as_advanced(OPENFLIPPER_SETTINGS_DEBUG)
Jan Möbius's avatar
Jan Möbius committed
82 83 84
endif()

if ( OPENFLIPPER_SETTINGS_DEBUG )
Matthias Möller's avatar
Matthias Möller committed
85
 add_definitions(-DOPENFLIPPER_SETTINGS_DEBUG )
Jan Möbius's avatar
Jan Möbius committed
86 87 88 89 90 91 92
endif()

#=======================================================
# Collect files to compile
#=======================================================

# source code directories
Matthias Möller's avatar
Matthias Möller committed
93 94 95 96
set (directories
  ../BasePlugin
  ../ACGHelper
  ../common
Jan Möbius's avatar
Jan Möbius committed
97
  ../threads
Matthias Möller's avatar
Matthias Möller committed
98 99
  ../common/bsp
  ../INIFile
Jan Möbius's avatar
Jan Möbius committed
100 101
  ../widgets/glWidget
  ../publicWidgets/objectSelectionWidget
Jan Möbius's avatar
Jan Möbius committed
102
  ../widgets/filePicker 
Jan Möbius's avatar
Jan Möbius committed
103
  ../Utils/FileIO
Martin Schultz's avatar
Martin Schultz committed
104
  ../Utils/Memory
Jan Möbius's avatar
Jan Möbius committed
105
)
106

107 108 109 110 111
# 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})

112 113 114 115 116 117 118
####################################################################################
# Object Type stuff
####################################################################################

#########################################################
# add additional toplevel object type sources
#########################################################
119 120
acg_append_files_recursive (headers "*.hh" ${CMAKE_SOURCE_DIR}/ObjectTypes)
acg_append_files_recursive (sources "*.cc" ${CMAKE_SOURCE_DIR}/ObjectTypes)
121 122
acg_append_files_recursive (ui "*.ui" ${CMAKE_SOURCE_DIR}/ObjectTypes)

123 124 125 126 127 128 129
#########################################################
# Find all packages and include their Object types
#########################################################

file(GLOB PACKAGES RELATIVE "${CMAKE_SOURCE_DIR}" "${CMAKE_SOURCE_DIR}/Package*" )

foreach ( OF_PACKAGE ${PACKAGES})
Jan Möbius's avatar
Jan Möbius committed
130 131 132
  acg_append_files_recursive (headers "*.hh" ${CMAKE_SOURCE_DIR}/${OF_PACKAGE}/ObjectTypes)
  acg_append_files_recursive (sources "*.cc" ${CMAKE_SOURCE_DIR}/${OF_PACKAGE}/ObjectTypes)
  acg_append_files_recursive (ui "*.ui" ${CMAKE_SOURCE_DIR}/${OF_PACKAGE}/ObjectTypes)
133 134 135 136 137 138
endforeach ()

#=======================================================
# Cleanup
#=======================================================

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

142 143 144 145
#=======================================================
# Moc/UIC handling
#=======================================================

146
# genereate uic and moc targets
Matthias Möller's avatar
Matthias Möller committed
147 148 149 150 151 152 153
if (QT5_FOUND)
  acg_qt5_autouic (uic_targets ${ui})
  acg_qt5_automoc (moc_targets ${headers})
elseif (QT4_FOUND)
  acg_qt4_autouic (uic_targets ${ui})
  acg_qt4_automoc (moc_targets ${headers})
endif ()
154

Jan Möbius's avatar
Jan Möbius committed
155 156 157 158
#=======================================================
# Create library
#=======================================================

Matthias Möller's avatar
Matthias Möller committed
159 160 161 162 163 164
if (QT5_FOUND)
  acg_add_library (OpenFlipperPluginLib SHARED ${uic_targets} ${sources} ${headers} ${moc_targets})
elseif (QT4_FOUND)
  acg_add_library (OpenFlipperPluginLib SHARED ${uic_targets} ${sources} ${headers} ${moc_targets})
endif ()

165 166
if( ADDITIONAL_PLUGINLIB_COMPILER_FLAGS )
  set_target_properties (
Matthias Möller's avatar
Matthias Möller committed
167
    OpenFlipperPluginLib PROPERTIES
168 169 170
    COMPILE_FLAGS ${ADDITIONAL_PLUGINLIB_COMPILER_FLAGS}
  )
endif()
171

172
target_link_libraries (OpenFlipperPluginLib
173
  ${OPENMESH_LIBRARIES}
174 175 176 177 178 179 180
  ACG
  ${QT_LIBRARIES}
  ${OPENGL_LIBRARIES}
  ${GLUT_LIBRARIES}
  ${FTGL_LIBS}
  ${ADDITIONAL_PLUGINLIB_LIBS}
)
Jan Möbius's avatar
Jan Möbius committed
181 182

#=======================================================
183
# Setup translation files for OpenFlipperPluginLib
Jan Möbius's avatar
Jan Möbius committed
184 185 186 187 188
#=======================================================

set (trans_files ${sources})
list (APPEND trans_files ${ui})
list (APPEND trans_files ${headers})
189
acg_add_translations (OpenFlipperPluginLib "de_DE" "${trans_files}")
Jan Möbius's avatar
Jan Möbius committed
190 191 192 193