CMakeLists.txt 15.5 KB
Newer Older
1
project(Xdmf)
2
cmake_minimum_required(VERSION 2.8.5)
Ken Leiter (Civ's avatar
Ken Leiter (Civ committed
3

4 5 6
#Needed to build DSM because relative paths are used to add its libraries
if (POLICY CMP0015)
	cmake_policy(SET CMP0015 NEW)
7
endif ()
8

9 10 11 12
if(MSVC10)
	SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR})
	SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR})
	SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR})
13 14 15
endif()

set(XDMF_LIBNAME "Xdmf" CACHE STRING "Name for this xdmf library to avoid collision")
16

17 18
set(XDMF_MAJOR_VERSION 3)
set(XDMF_MINOR_VERSION 0)
Nico Schlömer's avatar
Nico Schlömer committed
19 20
set(XDMF_PATCH_VERSION 0)
set(XDMF_VERSION "${XDMF_MAJOR_VERSION}.${XDMF_MINOR_VERSION}.${XDMF_PATCH_VERSION}")
21

22 23 24 25 26 27 28 29 30
if(BUILD_SHARED_LIBS)
  set(LIBTYPE SHARED)
  set(BUILD_SHARED 1)
else()
  set(LIBTYPE STATIC)
endif()
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/XdmfConfig.hpp.in
               ${CMAKE_CURRENT_BINARY_DIR}/XdmfConfig.hpp)

31 32 33 34 35 36 37
if (WIN32)
  set(XDMF_STATIC_AND_SHARED OFF)
else()
  option(XDMF_STATIC_AND_SHARED
       "Build both static and shared libraries" ON)
  mark_as_advanced(FORCE XDMF_STATIC_AND_SHARED)
endif()
38 39 40 41 42 43 44

# Enable CMake testing
option(XDMF_BUILD_TESTING "Build Tests" OFF)
if(XDMF_BUILD_TESTING)
  enable_testing()
  include(CTest)
endif()
45

46
if (XDMF_STATIC_AND_SHARED)
47
  add_definitions(-DXDMFSTATIC)
48
endif ()
49

50
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
51 52 53 54 55 56 57 58 59
include_directories(${CMAKE_CURRENT_BINARY_DIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
list(APPEND CMAKE_MODULE_PATH
  ${CMAKE_CURRENT_SOURCE_DIR}/CMake
  ${CMAKE_CURRENT_SOURCE_DIR}/CMake/VersionSuite)
if(XDMF_BUILD_TESTING)
  list(APPEND CMAKE_MODULE_PATH
    ${CMAKE_CURRENT_SOURCE_DIR}/CMake/TestingSuite)
endif()
Ken Leiter (Civ's avatar
Ken Leiter (Civ committed
60

61
include(XdmfFunctions)
62

63 64
option(XDMF_INSTALL_NO_DEVELOPMENT "Prevent install from writing out developement files." OFF)
mark_as_advanced(XDMF_INSTALL_NO_DEVELOPMENT)
65 66 67
# Converting Install Prefix to an absolute path
get_filename_component(CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" ABSOLUTE)

68
# RPath
Andrew Burns's avatar
Andrew Burns committed
69 70 71 72 73 74 75
option(XDMF_SET_RPATH ON)
if (XDMF_SET_RPATH)
  set(CMAKE_SKIP_BUILD_RPATH  FALSE)
  set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
  set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib)
  set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
endif ()
76

77 78 79
# Should we build with documentation
option(XDMF_BUILD_DOCUMENTATION OFF)
if(XDMF_BUILD_DOCUMENTATION)
80
  add_subdirectory(doc)
81
endif()
82

83 84 85 86
# Wrapper Setup
option(XDMF_WRAP_PYTHON OFF)
option(XDMF_WRAP_JAVA OFF)

87 88 89 90 91 92 93 94 95 96 97 98 99
#check for TIFF
find_package(TIFF)
if (TIFF_FOUND)
  add_definitions(-DXDMF_BUILD_TIFF)
  mark_as_advanced(FORCE TIFF_INCLUDE_DIR)
  mark_as_advanced(FORCE TIFF_LIBRARIES)
  mark_as_advanced(FORCE TIFF_LIBRARY)
  include_directories(${TIFF_INCLUDE_DIR})
  get_filename_component(TIFF_LIBRARY_DIR "${TIFF_LIBRARY}" PATH)
  set(XDMF_LIBRARY_DIRS ${XDMF_LIBRARY_DIRS} ${TIFF_LIBRARY_DIR})
  set(XDMF_LIBRARIES ${XDMF_LIBRARIES} ${TIFF_LIBRARIES})
endif (TIFF_FOUND)

100 101
# Test for DSM
option(XDMF_BUILD_DSM OFF)
102
mark_as_advanced(XDMF_BUILD_DSM)
103
if(XDMF_BUILD_DSM)
104 105 106 107 108 109
  find_package(MPI REQUIRED)
  if(MPI_FOUND)
    include_directories(${MPI_INCLUDE_PATH})
    set(XDMF_LIBRARIES ${XDMF_LIBRARIES} ${MPI_LIBRARY} ${MPI_EXTRA_LIBRARY})
    get_filename_component(MPI_LIBRARY_DIR ${MPI_LIBRARY} PATH)
    set(XDMF_LIBRARY_DIRS ${XDMF_LIBRARY_DIRS} ${MPI_LIBRARY_DIR})
110 111 112 113
    # intel compiler requires an extra tag for CXX_FLAGS in order to properly build
    STRING(REGEX MATCH "icpc" IS_INTEL "${CMAKE_CXX_COMPILER}")
    if (NOT "${IS_INTEL}" STREQUAL "")
      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DMPICH_IGNORE_CXX_SEEK")
114 115
    endif ()
  endif()
116
  option(XDMF_BUILD_DSM_THREADS ON)
117 118 119
  if (XDMF_WRAP_PYTHON)
    mark_as_advanced(FORCE PYTHON_INCLUDE_MPI4PY_DIR)
    set(PYTHON_INCLUDE_MPI4PY_DIR "" CACHE STRING "Directory containing mpi4py/mpi4py.i")
120
  endif ()
121
  add_definitions(-DXDMF_BUILD_DSM)
122
endif()
123

124 125
# If we are wrapping either, we need swig
if(XDMF_WRAP_PYTHON OR XDMF_WRAP_JAVA)
126 127 128 129
  find_package(SWIG REQUIRED)
  include(${SWIG_USE_FILE})
  if(${SWIG_VERSION} LESS 2.0.0)
    message(SEND_ERROR "Swig must be version 2.0.0 or greater")
130 131
  endif()
endif()
132 133 134

# If we are wrapping python, let's include it in the top level
if(XDMF_WRAP_PYTHON)
135 136
  find_package(PythonInterp ${REQUESTED_PYTHON_VERSION} REQUIRED)
  find_package(PythonLibs ${REQUESTED_PYTHON_VERSION} REQUIRED)
137
  if (XDMF_BUILD_DSM)
138 139 140 141 142 143
    find_package (MPI4PY REQUIRED)
    if (MPI4PY_FOUND)
      if ("${PYTHON_INCLUDE_MPI4PY_DIR}" STREQUAL "")
        set(PYTHON_INCLUDE_MPI4PY_DIR ${MPI4PY_INCLUDE_DIR})
      endif ()
    endif ()
144
    include_directories(${PYTHON_INCLUDE_DIRS} ${MPI_CXX_INCLUDE_PATH} ${PYTHON_INCLUDE_MPI4PY_DIR})
145
  else ()
146
    include_directories(${PYTHON_INCLUDE_DIRS})
147
  endif ()
148 149 150 151 152 153 154 155

  # A macro to swig and create the python files
  # Since we essentually do the same thing inside and outside core, it
  # would be easier as a macro
  # Parameters:
  #     python_name = the name of the intended target to be wrapped
  #     ${ARGN} = any dependencies needed by the target
  # Output:
156 157
  #     Target Name = the output target name will have ${python_name} as its name
  macro(XDMF_SWIG_PYTHON python_name)
158
    set(CMAKE_SWIG_OUTDIR ${CMAKE_BINARY_DIR})
159 160
    # optimize swig generation --- these are all flags corresponding to -O
    # except -fvirtual which breaks visitor operation
161
    set(CMAKE_SWIG_FLAGS ${XDMF_SWIG_FLAGS} -modern -fastdispatch -nosafecstrings -noproxydel -fastproxy -fastinit -fastunpack -fastquery -modernargs -nobuildnone)
162 163 164
    #Enables DSM
    if (XDMF_BUILD_DSM)
      set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -DXDMF_BUILD_DSM)
165 166
      if (XDMF_BUILD_DSM_THREADS)
        set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -DXDMF_BUILD_DSM_THREADS)
167 168
      endif ()
    endif ()
169 170 171
    if (TIFF_FOUND)
      set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -DXDMF_BUILD_TIFF)
    endif ()
172
    set_source_files_properties(${python_name}.i PROPERTIES CPLUSPLUS ON)
173
    set(swig_extra_generated_files "")
Andrew J. Burns (Cont's avatar
Andrew J. Burns (Cont committed
174
    swig_add_module(${python_name}Python python ${python_name}.i)
175 176 177 178 179 180 181

    if (NOT APPLE)
      swig_link_libraries(${python_name}Python ${python_name} ${PYTHON_LIBRARIES})
    else ()
      swig_link_libraries(${python_name}Python ${python_name})
    endif ()

182 183
    set_property(DIRECTORY APPEND PROPERTY
      ADDITIONAL_MAKE_CLEAN_FILES
184
      ${CMAKE_CURRENT_BINARY_DIR}/${python_name}.pyc
185
    )
186 187 188

    if("${ARGN}" STRGREATER "")
      add_dependencies(${python_name} "${ARGN}")
189
    endif()
190 191

    if(WIN32)
192
      if(NOT MSVC10)
193
        set_target_properties(${SWIG_MODULE_${python_name}Python_REAL_NAME}
194 195 196
          PROPERTIES
          PREFIX ../
          IMPORT_PREFIX ../
197 198 199
          RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
          LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
          ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
200
      endif()
201
    endif()
202

203 204 205 206 207 208
    if(APPLE)
      set_target_properties(${SWIG_MODULE_${python_name}Python_REAL_NAME}
        PROPERTIES
        LINK_FLAGS "-undefined dynamic_lookup")
    endif()

209 210 211 212
    set_target_properties(${SWIG_MODULE_${python_name}Python_REAL_NAME}
      PROPERTIES
      OUTPUT_NAME "_${python_name}")

213 214 215 216 217
    set(
      PYTHON_INSTALL_DIR
      ${CMAKE_INSTALL_PREFIX}/lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/xdmf
      )

218 219
    string(TOUPPER ${python_name} python_name_upper)
    set(${python_name_upper}_PYTHON
220
      ${PYTHON_INSTALL_DIR}/${python_name}.py)
221 222 223 224
    get_directory_property(${python_name}Parent PARENT_DIRECTORY)
    if(NOT "${${python_name}Parent}" STREQUAL "")
      set(${python_name_upper}_PYTHON ${${python_name_upper}_PYTHON}
        PARENT_SCOPE)
225
    endif()
226

Joseph G. Hennessey's avatar
Joseph G. Hennessey committed
227
    install(FILES ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${python_name}.py
228
      DESTINATION ${PYTHON_INSTALL_DIR})
229
    install(TARGETS ${SWIG_MODULE_${python_name}Python_REAL_NAME}
230
      DESTINATION ${PYTHON_INSTALL_DIR})
231 232
  endmacro()
endif()
233 234 235

# If we are wrapping java, let's include it in the top level
if(XDMF_WRAP_JAVA)
236 237 238 239 240 241 242 243 244 245 246 247 248
  find_package(Java REQUIRED)
  find_package(JNI REQUIRED)
  include_directories(${CMAKE_CURRENT_SOURCE_DIR}
    ${JAVA_INCLUDE_PATH}
    ${JAVA_INCLUDE_PATH2})

  # A macro to swig and create the jar files
  # Since we essentually do the same thing inside and outside core, it
  # would be easier as a macro
  # Parameters:
  #     java_name = the name of the intended target to be wrapped
  #     ${ARGN} = any dependencies needed by the target
  # Output:
249 250 251
  #     Target Name     = the output target name will have ${java_name}Java as its name
  #     Target Jar      = the output target jar will have ${java_name}Java.jar as its name
  macro(XDMF_SWIG_JAVA java_name)
252
    set(${java_name}_JAVA_JAR ${CMAKE_BINARY_DIR}/${java_name}.jar)
253
    set(XDMF_JAVA_PACKAGE_DIR mil/army/arl/xdmf)
254
    set(XDMF_JAVA_DIR ${CMAKE_BINARY_DIR}/${XDMF_JAVA_PACKAGE_DIR})
255
    set(CMAKE_SWIG_OUTDIR ${XDMF_JAVA_DIR})
256
    set(CMAKE_SWIG_FLAGS ${XDMF_SWIG_FLAGS} -v -make_default -package mil.army.arl.xdmf)
257
    set_source_files_properties(${java_name}.i PROPERTIES CPLUSPLUS ON)
258
    set(swig_extra_generated_files "")
259 260 261 262
    swig_add_module(${java_name}Java java ${java_name}.i)
    swig_link_libraries(${java_name}Java ${java_name})

    if(WIN32)
263 264 265 266 267
	  if(NOT MSVC10)
        set_target_properties(${SWIG_MODULE_${java_name}Java_REAL_NAME}
          PROPERTIES
          PREFIX ../
          IMPORT_PREFIX ../
268 269 270 271
          RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
          LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
          ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
	  endif()
272
      set(java_files *.java)
273
      set(java_dest "bin")
274
      set(separator "\;")
275
    else()
276
      set(java_files ${XDMF_JAVA_DIR}/*.java)
277
      set(java_dest "lib/java")
278
      set(separator ":")
279
    endif()
280 281 282 283 284 285 286 287

    add_custom_target(${java_name}_Java_Dir ALL DEPENDS ${XDMF_JAVA_DIR})
    add_custom_command(OUTPUT ${XDMF_JAVA_DIR}
      COMMAND ${CMAKE_COMMAND} -E make_directory ${XDMF_JAVA_DIR})
    add_custom_target(Compiled_${java_name}_Jar ALL DEPENDS
      ${${java_name}_JAVA_JAR})
    add_custom_command(OUTPUT ${${java_name}_JAVA_JAR}
      COMMAND ${CMAKE_COMMAND} -E chdir ${XDMF_JAVA_PACKAGE_DIR}
288
              ${JAVA_COMPILE} -cp \".${java_cp_jars}\" ${java_files}
289 290
      COMMAND ${JAVA_ARCHIVE} -cvf ${${java_name}_JAVA_JAR}
             "${XDMF_JAVA_PACKAGE_DIR}/*.class")
291 292 293 294 295
    add_dependencies(${java_name}Java ${java_name}_Java_Dir)
    add_dependencies(Compiled_${java_name}_Jar ${java_name}Java)

    if(NOT ${ARGN} EQUAL "")
      add_dependencies(Compiled_${java_name}_Jar "${ARGN}")
296
    endif()
297 298 299

    set_property(DIRECTORY APPEND PROPERTY
      ADDITIONAL_MAKE_CLEAN_FILES
300
      ${CMAKE_CURRENT_BINARY_DIR}/${java_name}.jar
301
      ${XDMF_JAVA_DIR})
302

303
    set(java_cp_jars "${java_cp_jars}${separator}${${java_name}_JAVA_JAR}")
304 305 306 307 308 309 310
    string(TOUPPER ${java_name} java_name_upper)
    set(${java_name_upper}_JAVA_JAR
      ${CMAKE_INSTALL_PREFIX}/lib/java/${java_name}.jar)
    get_directory_property(${java_name}Parent PARENT_DIRECTORY)
    if(NOT "${${java_name}Parent}" STREQUAL "")
      set(${java_name_upper}_JAVA_JAR ${${java_name_upper}_JAVA_JAR}
        PARENT_SCOPE)
311
      set(java_cp_jars "${java_cp_jars}" PARENT_SCOPE)
312
    endif()
313

314
    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${java_name}.jar
315 316 317
      DESTINATION lib/java)
    install(TARGETS ${SWIG_MODULE_${java_name}Java_REAL_NAME}
      DESTINATION ${java_dest})
318 319
  endmacro()
endif()
320

321
add_subdirectory(core)
322
include_directories(${XdmfCore_INCLUDE_DIRS} ${XdmfDSM_INCLUDE_DIRS})
323
link_directories(${XDMF_LIBRARY_DIRS})
324

325 326
include(GNUInstallDirs)

327
option(XDMF_BUILD_CORE_ONLY OFF)
328
mark_as_advanced(XDMF_BUILD_CORE_ONLY)
329
if(NOT XDMF_BUILD_CORE_ONLY)
330
  set(XdmfSources
331
    XdmfAggregate
332 333 334 335 336 337 338
    XdmfAttribute
    XdmfAttributeCenter
    XdmfAttributeType
    XdmfCurvilinearGrid
    XdmfDomain
    XdmfGeometry
    XdmfGeometryType
Kenneth Leiter's avatar
Kenneth Leiter committed
339
    XdmfGraph
340 341 342
    XdmfGrid
    XdmfGridCollection
    XdmfGridCollectionType
343
    XdmfGridController
344
    XdmfGridTemplate
345 346 347 348 349 350 351
    XdmfItemFactory
    XdmfMap
    XdmfReader
    XdmfRectilinearGrid
    XdmfRegularGrid
    XdmfSet
    XdmfSetType
352
    XdmfTemplate
353 354 355 356
    XdmfTime
    XdmfTopology
    XdmfTopologyType
    XdmfUnstructuredGrid)
357

358 359
  if(XDMF_STATIC_AND_SHARED)
    add_library(XdmfObjects OBJECT ${XdmfSources})
360 361 362 363 364
    SET_TARGET_PROPERTIES(
      XdmfObjects PROPERTIES
      VERSION ${XDMF_VERSION}
      SOVERSION ${XDMF_MAJOR_VERSION}
      )
365 366 367 368 369
    set_target_properties(XdmfObjects PROPERTIES
      POSITION_INDEPENDENT_CODE True)
    add_library(${XDMF_LIBNAME} $<TARGET_OBJECTS:XdmfObjects>)
    if (BUILD_SHARED_LIBS)
      add_library(Xdmf_Static STATIC $<TARGET_OBJECTS:XdmfObjects>)
370 371 372 373
      set_target_properties(
        Xdmf_Static PROPERTIES
        OUTPUT_NAME "Xdmf"
        )
374 375
    endif (BUILD_SHARED_LIBS)
  else()
376
    add_library(${XDMF_LIBNAME} ${LIBTYPE} ${XdmfSources})
377
  endif()
378 379 380 381 382
  SET_TARGET_PROPERTIES(
    ${XDMF_LIBNAME} PROPERTIES
    VERSION ${XDMF_VERSION}
    SOVERSION ${XDMF_MAJOR_VERSION}
    )
383
  if(XDMF_BUILD_DSM)
David E. DeMarle's avatar
David E. DeMarle committed
384
    target_link_libraries(${XDMF_LIBNAME} XdmfCore XdmfDSM)
385 386 387
    if(XDMF_STATIC_AND_SHARED AND BUILD_SHARED_LIBS)
        target_link_libraries(Xdmf_Static XdmfCore_Static XdmfDSM_Static)
    endif()
388
  else(XDMF_BUILD_DSM)
David E. DeMarle's avatar
David E. DeMarle committed
389
    target_link_libraries(${XDMF_LIBNAME} XdmfCore)
390
    if(XDMF_STATIC_AND_SHARED AND BUILD_SHARED_LIBS)
391
      target_link_libraries(Xdmf_Static XdmfCore_Static)
392
    endif ()
393
  endif(XDMF_BUILD_DSM)
394 395 396
  if (COMMAND vtk_target_install)
    vtk_target_install(${XDMF_LIBNAME})
  endif()
397 398

  if(WIN32)
399 400
    if (BUILD_SHARED_LIBS)
      set_target_properties(${XDMF_LIBNAME} PROPERTIES
401 402 403 404 405
        DEFINE_SYMBOL XDMF_EXPORTS)
      if(XDMF_STATIC_AND_SHARED)
        set_target_properties(Xdmf_Static PROPERTIES
          DEFINE_SYMBOL Xdmf_EXPORTS)
      endif()
406 407
    endif ()
  endif()
408 409

  if(XDMF_WRAP_JAVA)
410 411
    XDMF_SWIG_JAVA(${XDMF_LIBNAME} Compiled_XdmfCore_Jar)
  endif()
412 413

  if(XDMF_WRAP_PYTHON)
414 415 416 417
    if (NOT BUILD_SHARED_LIBS)
      message(FATAL_ERROR "Python Wrappers do not function"
                          " properly without shared libraries")
    endif (NOT BUILD_SHARED_LIBS)
418
    if (XDMF_BUILD_DSM)
David E. DeMarle's avatar
David E. DeMarle committed
419 420 421 422
      XDMF_SWIG_PYTHON(${XDMF_LIBNAME} XdmfCore XdmfDSM)
    else()
      XDMF_SWIG_PYTHON(${XDMF_LIBNAME} XdmfCore)
    endif()
423 424 425 426
    set(
      XDMF_PYTHON_INSTALL_DIR
      ${CMAKE_INSTALL_PREFIX}/lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/xdmf
      )
427
  endif()
428

429
  if(XDMF_BUILD_TESTING)
430
    add_subdirectory(tests)
431
  endif()
432 433 434 435

  option(XDMF_BUILD_UTILS OFF)
  if(XDMF_BUILD_UTILS)
    add_subdirectory(utils)
436
  endif()
437

438
  if(WIN32)
439 440
    set(XDMF_LIBRARY ${CMAKE_INSTALL_PREFIX}/lib/${XDMF_LIBNAME}.lib)
  endif()
Nico Schlömer's avatar
Nico Schlömer committed
441

442
  if(UNIX)
443
    if (BUILD_SHARED_LIBS)
444
      set(XDMF_LIBRARY ${CMAKE_INSTALL_LIBDIR}/lib${XDMF_LIBNAME}.so)
445
    else (BUILD_SHARED_LIBS)
446
      set(XDMF_LIBRARY ${CMAKE_INSTALL_LIBDIR}/lib${XDMF_LIBNAME}.a)
447
    endif (BUILD_SHARED_LIBS)
448
  endif(UNIX)
449

450
  if(APPLE)
451
    set(XDMF_LIBRARY ${CMAKE_INSTALL_LIBDIR}/lib${XDMF_LIBNAME}.dylib)
452
  endif()
Nico Schlömer's avatar
Nico Schlömer committed
453 454 455 456 457

  file(GLOB XdmfHeaders
    "*.hpp"
    "*.tpp"
    "*.i"
458
    "CMake/VersionSuite/*.hpp"
459
    "${CMAKE_CURRENT_BINARY_DIR}/*.hpp"
460
  )
461 462 463
  if (NOT XDMF_INSTALL_NO_DEVELOPMENT) 
    install(FILES ${XdmfHeaders} DESTINATION include)
  endif()
464
  install(TARGETS ${XDMF_LIBNAME}
465 466 467
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
468
  if (XDMF_STATIC_AND_SHARED AND BUILD_SHARED_LIBS)
469
    install(TARGETS Xdmf_Static
470 471 472
      RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
      LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
      ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
473
  endif()
474
endif()
475

476 477 478 479 480 481
if(WIN32 AND NOT CYGWIN)
  set(DEF_INSTALL_CMAKE_DIR CMake)
else()
  set(DEF_INSTALL_CMAKE_DIR
    "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
endif()
482
xdmf_create_config_file(${PROJECT_NAME})
483
install(FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
484
  DESTINATION ${DEF_INSTALL_CMAKE_DIR})