ENH: Set FREEFOAM_CONFIG_DIR automatically in RunFunctions
[freefoam.git] / CMakeLists.txt
blob20af0cfdfec6a8d1400ff5fc71a9b0a62d287838
1 #-------------------------------------------------------------------------------
2 #               ______                _     ____          __  __
3 #              |  ____|             _| |_  / __ \   /\   |  \/  |
4 #              | |__ _ __ ___  ___ /     \| |  | | /  \  | \  / |
5 #              |  __| '__/ _ \/ _ ( (| |) ) |  | |/ /\ \ | |\/| |
6 #              | |  | | |  __/  __/\_   _/| |__| / ____ \| |  | |
7 #              |_|  |_|  \___|\___|  |_|   \____/_/    \_\_|  |_|
9 #                   FreeFOAM: The Cross-Platform CFD Toolkit
11 # Copyright (C) 2008-2009 Michael Wild <themiwi@users.sf.net>
12 #                         Gerber van der Graaf <gerber_graaf@users.sf.net>
13 #-------------------------------------------------------------------------------
14 # License
15 #   This file is part of FreeFOAM.
17 #   FreeFOAM is free software; you can redistribute it and/or modify it
18 #   under the terms of the GNU General Public License as published by the
19 #   Free Software Foundation; either version 2 of the License, or (at your
20 #   option) any later version.
22 #   FreeFOAM is distributed in the hope that it will be useful, but WITHOUT
23 #   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
24 #   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
25 #   for more details.
27 #   You should have received a copy of the GNU General Public License
28 #   along with FreeFOAM; if not, write to the Free Software Foundation,
29 #   Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
30 #-------------------------------------------------------------------------------
32 cmake_minimum_required(VERSION 2.8.0 FATAL_ERROR)
34 project(FreeFOAM)
36 string(TOLOWER "${PROJECT_NAME}" LOWER_PROJECT_NAME)
38 # version information
39 set(FOAM_VERSION_MAJOR 0)
40 set(FOAM_VERSION_MINOR 1)
41 set(FOAM_VERSION_PATCH 0)
42 set(FOAM_VERSION ${FOAM_VERSION_MAJOR}.${FOAM_VERSION_MINOR})
43 set(FOAM_VERSION_FULL ${FOAM_VERSION}.${FOAM_VERSION_PATCH})
45 # set up custom cmake module path
46 set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMake/Modules)
48 # utilities
49 set(FOAM_CREATE_INCLUDE_WRAPPERS TRUE)
50 set(FOAM_HAS_FLEX_SOURCES TRUE)
51 set(FOAM_ENABLE_DOC_INDEX TRUE)
52 set(FOAM_EXPORT_NAMESPACE FOAM_)
53 include(${CMAKE_SOURCE_DIR}/CMake/FOAMUtilities.cmake)
54 include(${CMAKE_SOURCE_DIR}/CMake/FOAMThirdPartyUtilities.cmake)
55 include(${CMAKE_SOURCE_DIR}/CMake/FOAMInternal.cmake)
57 # determine computer system
58 include(${CMAKE_SOURCE_DIR}/CMake/FOAMDetermineArch.cmake)
60 # select precision
61 foam_option(FOAM_DOUBLE_PRECISION "Double precision"
62   "Compile ${PROJECT_NAME} with double precision floating point arithmetics." ON)
63 if(FOAM_DOUBLE_PRECISION)
64   set(FOAM_PRECISION DP)
65 else()
66   set(FOAM_PRECISION SP)
67 endif()
69 # select whether we want to build framewors on Mac OS X
70 if(APPLE)
71   foam_option(FOAM_BUILD_FRAMEWORKS "Build frameworks"
72     "Build frameworks on Mac OS X" OFF)
73 else()
74   set(FOAM_BUILD_FRAMEWORKS OFF)
75 endif()
77 # ask user whether she wants to build ParaView plugins
78 foam_option(FOAM_BUILD_PARAVIEW_PLUGINS "Build ParaView plugins"
79   "Build the ParaView plugins. Requires a ParaView build tree." OFF)
80 if(FOAM_BUILD_PARAVIEW_PLUGINS)
81   # find ParaView, which also find the VTK which has been used to build ParaView
82   find_package(ParaView)
83   if(NOT ParaView_FOUND)
84     message(SEND_ERROR
85       "Failed to find the ParaView build tree. Specify ParaView_DIR or\n"
86       "disable FOAM_BUILD_PARAVIEW_PLUGINS")
87   endif()
88   # find the installed ParaView executable
89   find_program(
90     FOAM_PARAVIEW3_APP NAMES paraview paraview.app
91     HINTS ${ParaView_DIR}/bin
92     DOC "Path to the ParaView 3 executable (or application bundle on Mac OS X)"
93     )
94   if(NOT FOAM_PARAVIEW3_APP)
95     message(SEND_ERROR
96       "Failed to find the ParaView 3 executable or application bundle")
97   endif()
98 endif()
99 mark_as_advanced(FOAM_PARAVIEW3_APP)
101 # we want shared libraries
102 set(BUILD_SHARED_LIBS SHARED)
104 # installation directories
105 foam_installation_path(FOAM_INSTALL_BIN_PATH bin "Executables"
106   "Executables installation path")
107 if(APPLE AND FOAM_BUILD_FRAMEWORKS)
108   foam_installation_path(FOAM_INSTALL_FRAMEWORK_PATH /Library/Frameworks
109     "Frameworks" "Framework installation path")
110 endif()
111 foam_installation_path(FOAM_INSTALL_LIBRARY_PATH
112   lib/${CMAKE_PROJECT_NAME}-${FOAM_VERSION_FULL}
113   "Libraries" "Library installation path")
114 foam_installation_path(FOAM_INSTALL_LIBEXEC_PATH
115   libexec/${CMAKE_PROJECT_NAME}-${FOAM_VERSION_FULL} "Private executables"
116   "Installation path for executables not on PATH.")
117 foam_installation_path(FOAM_INSTALL_HEADER_PATH
118   include/${CMAKE_PROJECT_NAME}-${FOAM_VERSION_FULL}
119   "Headers" "Header installation path (not for frameworks)")
120 foam_installation_path(FOAM_INSTALL_CONFIG_PATH
121   etc/${CMAKE_PROJECT_NAME}/${FOAM_VERSION_FULL} "Config files"
122   "Configuration files installation path")
123 foam_installation_path(FOAM_INSTALL_DATA_PATH
124   share/${CMAKE_PROJECT_NAME}-${FOAM_VERSION_FULL} "Data files"
125   "Data files installation path")
126 foam_installation_path(FOAM_INSTALL_DOC_PATH
127   share/doc/${CMAKE_PROJECT_NAME}-${FOAM_VERSION_FULL} "Documentation"
128   "Documentation files installation path")
129 foam_installation_path(FOAM_INSTALL_MAN_PATH share/man "Man pages"
130   "Man-pages installation path")
131 foam_installation_path(FOAM_INSTALL_TUTORIALS_PATH "${FOAM_INSTALL_DOC_PATH}"
132   "Tutorials" "Tutorials installation path")
133 foam_installation_path(FOAM_INSTALL_CMAKE_PATH "${FOAM_INSTALL_DATA_PATH}/CMake"
134   "CMake files" "CMake configuration files installation path")
135 if(FOAM_BUILD_PARAVIEW_PLUGINS)
136   foam_installation_path(FOAM_INSTALL_PVFOAMREADER_PATH
137     "${FOAM_INSTALL_LIBRARY_PATH}/plugins/PVFoamReader"
138     "ParaView2 plugin" "ParaView2 OpenFOAM-reader plugin installation path")
139   foam_installation_path(FOAM_INSTALL_PV3FOAMREADER_PATH
140     "${FOAM_INSTALL_LIBRARY_PATH}/plugins/PV3FoamReader"
141     "ParaView3 plubin" "ParaView3 OpenFOAM-reader plugin installation path")
142 endif()
143 foam_installation_path(FOAM_INSTALL_USERDFOAM_PATH
144   "${FOAM_INSTALL_LIBRARY_PATH}/plugins/ensightReader"
145   "Ensight plugin" "Ensight OpenFOAM-reader plugin installation path")
147 set(FOAM_INSTALL_RUNTIME_PATH "${FOAM_INSTALL_LIBEXEC_PATH}")
149 # determine the INSTALL_NAME_DIR of potential frameworks
150 if(APPLE AND FOAM_BUILD_FRAMEWORKS)
151   set(FOAM_FRAMEWORK_INSTALL_NAME_DIR "${FOAM_INSTALL_FRAMEWORK_PATH}")
152 else()
153   set(FOAM_FRAMEWORK_INSTALL_NAME_DIR "${FOAM_INSTALL_LIBRARY_PATH}")
154 endif()
156 # select html documentation browser (try a few well known ones for default)
157 # have to loop, because find_program(HTML_DOC_BROWSER NAMES ...) garbles things up
158 foreach(browser open gnome-open kde-open x-www-browser www-browser
159     firefox epiphany konqueror w3m lynx launch open)
160   find_program(HTML_DOC_BROWSER ${browser}
161     DOC "Program to open an HTML file")
162   if(HTML_DOC_BROWSER)
163     break()
164   endif()
165 endforeach()
166 if(NOT HTML_DOC_BROWSER)
167   message(STATUS
168     "Failed to find a program to open HTML pages with (a.k.a a browser).\n"
169     "Point HTML_DOC_BROWSER to a suitable program.")
170   set(HTML_DOC_BROWSER "ECHO" CACHE STRING
171     "Command to open an HTML file (ECHO will print it to STDOUT)" FORCE)
172 endif()
173 set(FOAM_HTML_DOC_BROWSER_COMMAND
174   "\${HTML_DOC_BROWSER} %f" CACHE STRING "Command to open an HTML file")
175 string(CONFIGURE "${FOAM_HTML_DOC_BROWSER_COMMAND}"
176   FOAM_HTML_DOC_BROWSER_COMMAND ESCAPE_QUOTES)
177 mark_as_advanced(HTML_DOC_BROWSER FOAM_HTML_DOC_BROWSER_COMMAND)
179 # Executable-prefix
180 string(TOLOWER "${PROJECT_NAME}-" _FOAM_DEFAULT_EXE_PREFIX)
181 set(FOAM_EXE_PREFIX "${_FOAM_DEFAULT_EXE_PREFIX}"
182   CACHE STRING "Prefix for application output-names")
183 mark_as_advanced(FOAM_EXE_PREFIX)
184 string(TOUPPER "${FOAM_EXE_PREFIX}" FOAM_UPPER_EXE_PREFIX)
186 # ask user whether she wants to build Doxygen docs
187 foam_option(FOAM_ENABLE_DOXYGEN_DOCS "Doxygen API documentation"
188   "Build the Doxygen API documentation" OFF)
189 # if user wants doxygen docs, find Doxygen and set up some options
190 if(FOAM_ENABLE_DOXYGEN_DOCS)
191   find_package(Doxygen REQUIRED)
192   foam_option(FOAM_DOXYDOCS_FOR_SF "Doxygen for SourceForge"
193     "Build the Doxygen docs for deployment on SourceForge" OFF)
194   # ask user whether she prefers local or www docs
195   foam_option(FOAM_USE_LOCAL_DOXYGEN_DOCS "Use local API docs"
196     "Use the local Doxygen documentation instead of the one on http://freefoam.sf.net/doc/Doxygen/html" OFF)
197 endif()
199 # ask user whether she wants to build the man pages
200 foam_option(FOAM_ENABLE_MANPAGE_HELP "Build manpage help"
201   "Build the manpages (requires asciidoc)" OFF)
202 # ask user whether she wants to build the xhtml man pages
203 foam_option(FOAM_ENABLE_XHTML_HELP "Build xhtml help"
204   "Build the xhtml help pages (requires asciidoc)" OFF)
206 # assemble the list of enabled manpage formats
207 set(FOAM_MANPAGE_FORMATS)
208 if(FOAM_ENABLE_MANPAGE_HELP)
209   list(APPEND FOAM_MANPAGE_FORMATS manpage)
210 endif()
211 if(FOAM_ENABLE_XHTML_HELP)
212   list(APPEND FOAM_MANPAGE_FORMATS xhtml)
213 endif()
215 # set up the RPATH for installation
216 set(CMAKE_INSTALL_RPATH ${FOAM_INSTALL_LIBRARY_PATH})
217 set(CMAKE_INSTALL_NAME_DIR ${FOAM_FRAMEWORK_INSTALL_NAME_DIR})
219 # we want executables and libraries in uniform places
220 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY
221   "${CMAKE_BINARY_DIR}/libexec/${PROJECT_NAME}/${FOAM_VERSION_FULL}")
222 set(FOAM_LIBRARY_OUTPUT_DIRECTORY
223   "${CMAKE_BINARY_DIR}/lib/${PROJECT_NAME}-${FOAM_VERSION_FULL}")
224 set(FOAM_FRAMEWORK_OUTPUT_DIRECTORY
225   "${CMAKE_BINARY_DIR}/Library/Frameworks")
226 if(FOAM_BUILD_FRAMEWORKS)
227   set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${FOAM_FRAMEWORK_OUTPUT_DIRECTORY}")
228 else()
229   set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${FOAM_LIBRARY_OUTPUT_DIRECTORY}")
230 endif()
231 set(FOAM_ARCHIVE_OUTPUT_DIRECTORY "${FOAM_LIBRARY_OUTPUT_DIRECTORY}")
233 # find parallel libraries
234 set(_FOAM_PAR_ERROR
235   "FOAM_ENABLE_@PKG@ is true, but @PKG@ cannot be found.\n"
236   "If you have @PKG@ installed on your system, edit the variables\n"
237   "@PKG@_INCLUDE_DIR and @PKG@_LIBRARY in the cache, else disable the\n"
238   "setting FOAM_USE_@PKG@."
239   )
240 find_package(MPI)
241 if(MPI_FOUND)
242   set(_FOAM_USE_MPI ON)
243 else()
244   set(_FOAM_USE_MPI OFF)
245 endif()
246 foam_option(FOAM_USE_MPI "Use MPI"
247   "Build ${CMAKE_PROJECT} against MPI parallel libraries" ${_FOAM_USE_MPI})
248 if(FOAM_USE_MPI AND NOT MPI_FOUND)
249   string(REPLACE "@PKG@" "MPI" _FOAM_MPI_ERROR "${_FOAM_PAR_ERROR}")
250   message(SEND_ERROR "${_FOAM_MPI_ERROR}")
251 endif()
252 if(CMAKE_SYSTEM_NAME STREQUAL Linux)
253   find_package(GAMMA)
254   if(GAMMA_FOUND)
255     set(_FOAM_USE_GAMMA ON)
256   else()
257     set(_FOAM_USE_GAMMA OFF)
258   endif()
259   foam_option(FOAM_USE_GAMMA "Use GAMMA"
260     "Build ${CMAKE_PROJECT} against GAMMA parallel libraries"
261     ${_FOAM_USE_GAMMA})
262   if(FOAM_USE_GAMMA AND NOT GAMMA_FOUND)
263     string(REPLACE "@PKG@" "GAMMA" _FOAM_GAMMA_ERROR "${_FOAM_PAR_ERROR}")
264     message(SEND_ERROR "${_FOAM_GAMMA_ERROR}")
265   endif()
266 endif()
267 if(MPI_FOUND OR GAMMA_FOUND)
268   set(FOAM_USE_PARALLEL TRUE)
269 endif()
271 # find readline
272 find_package(Readline)
274 # substitution for build-tree and install-tree as used by
275 # foam_configure_files.
276 set(FOAM_CONFIGURE_FILES_VARIABLES
277   FOAM_DATA_DIR
278     "${CMAKE_BINARY_DIR}/data"
279     "${FOAM_INSTALL_DATA_PATH}"
280   FOAM_LOCAL_DOC_DIR
281     "${CMAKE_BINARY_DIR}/doc"
282     "${FOAM_INSTALL_DOC_PATH}"
283   FOAM_BIN_DIR
284     "${CMAKE_BINARY_DIR}/bin"
285     "${FOAM_INSTALL_BIN_PATH}"
286   FOAM_LIB_DIR
287     "${CMAKE_BINARY_DIR}/lib/FreeFOAM-${FOAM_VERSION_FULL}"
288     "${FOAM_INSTALL_LIBRARY_PATH}"
289   FOAM_LIBEXEC_DIR
290     "${CMAKE_BINARY_DIR}/libexec/FreeFOAM/${FOAM_VERSION_FULL}"
291     "${FOAM_INSTALL_LIBEXEC_PATH}"
292   FOAM_FRAMEWORK_DIR
293     "${CMAKE_BINARY_DIR}/Library/Frameworks"
294     "${FOAM_INSTALL_FRAMEWORK_PATH}"
295   FOAM_PV3FOAMREADER_DIR
296     "${FOAM_LIB_DIR}/plugins/PV3FoamReader"
297     "${FOAM_INSTALL_PV3FOAMREADER_PATH}"
298   FOAM_INCLUDE_DIR
299     "${CMAKE_BINARY_DIR}/include"
300     "${FOAM_INSTALL_HEADER_PATH}"
301   FOAM_CONFIG_DIR
302     "${CMAKE_BINARY_DIR}/etc"
303     "${FOAM_INSTALL_CONFIG_PATH}"
304   FOAM_CMAKECONFIG_DIR
305     "${CMAKE_BINARY_DIR}/CMake"
306     "${FOAM_INSTALL_CMAKE_PATH}"
307   FOAM_IS_INSTALLED
308     "FALSE"
309     "TRUE"
310   FOAM_FIX_INCLUDES
311     "${CMAKE_BINARY_DIR}/data/utilities/doxyFixIncludes $1 |"
312     "cat $1 |"
313   FOAM_FIX_HEADER_NAME
314     "| ${CMAKE_BINARY_DIR}/data/utilities/doxyFixHeaderName $1"
315     ""
316   )
317 if(FOAM_USE_LOCAL_DOXYGEN_DOCS)
318   list(APPEND FOAM_CONFIGURE_FILES_VARIABLES
319     FOAM_DOC_DIR "${CMAKE_BINARY_DIR}/doc" "${FOAM_INSTALL_DOC_PATH}")
320 else()
321   set(_sf_doc "http://freefoam.sf.net/doc/${FOAM_VERSION_FULL}")
322   list(APPEND FOAM_CONFIGURE_FILES_VARIABLES
323     FOAM_DOC_DIR "${_sf_doc}" "${_sf_doc}")
324 endif()
326 # thirdparty libraries
327 foam_thirdparty_option(Metis
328   "Required by the metis decomposition method"
329   Metis TRUE ON)
330 if(FOAM_ENABLE_METIS)
331   if(FOAM_ENABLE_METIS AND METIS_REQUIRES_MPI AND NOT FOAM_USE_MPI)
332     message(SEND_ERROR
333       "Your metis implementation requires FOAM_USE_MPI to be enabled."
334       "If you don't have/want MPI, enable FOAM_BUILD_PRIVATE_METIS instead.")
335   endif()
336 endif()
337 foam_thirdparty_option(ParMetis
338   "Required by the parmetis decomposition method"
339   ParMetis TRUE ${FOAM_USE_MPI}
340   PARMETIS_metis_LIBRARY PARMETIS_parmetis_LIBRARY)
341 if(FOAM_ENABLE_PARMETIS AND NOT FOAM_USE_MPI)
342   message(SEND_ERROR
343     "ParMetis requires FOAM_USE_MPI to be enabled.")
344 endif()
345 if(FOAM_ENABLE_PARMETIS AND NOT FOAM_ENABLE_METIS)
346   message(SEND_ERROR
347     "ParMetis requires FOAM_ENABLE_METIS to be enabled.")
348 endif()
349 set(SCOTCH_USE_ERREXIT TRUE)
350 foam_thirdparty_option(SCOTCH "" SCOTCH FALSE ON SCOTCH_scotch_LIBRARY
351   SCOTCH_scotcherr_LIBRARY SCOTCH_scotcherrexit_LIBRARY)
352 # do not enable mgridgen by default (licensing issues)
353 if(NOT FOAM_DOUBLE_PRECISION)
354   set(MGRIDGEN_USE_REAL ON)
355 endif()
356 foam_thirdparty_option(MGRIDGEN
357   "Required by the MGridGen GAMG agglomerator. LICENSE UNCLEAR"
358   MGRIDGEN TRUE OFF)
359 # do not enable libccmio by default (licensing issues)
360 foam_thirdparty_option(ccmio
361   "Required by ccm26ToFoam. REQUIRES PERMISSION BY CDADAPCO!"
362   Ccmio TRUE OFF)
363 foam_thirdparty_option(zlib "" ZLIB FALSE ON)
365 if(FOAM_BUILD_PRIVATE_METIS OR FOAM_BUILD_PRIVATE_MGRIDGEN)
366   find_package(Threads REQUIRED)
367 endif()
368 if(FOAM_BUILD_PRIVATE_SCOTCH)
369   find_package(BISON REQUIRED)
370   find_package(FLEX REQUIRED)
371   find_package(Threads)
372 endif()
374 # figure out default Pstream library
375 if(FOAM_USE_MPI)
376   set(_FOAM_DEFAULT_PSTREAM mpi)
377 elseif(FOAM_USE_GAMMA)
378   set(_FOAM_DEFAULT_PSTREAM gamma)
379 else()
380   set(_FOAM_DEFAULT_PSTREAM dummy)
381 endif()
382 set(FOAM_DEFAULT_PSTREAM ${_FOAM_DEFAULT_PSTREAM} CACHE STRING
383   "Default Pstream library implementation [dummy|mpi|gamma]")
384 mark_as_advanced(FOAM_DEFAULT_PSTREAM)
386 # find m4 macro processor
387 find_program(M4_EXECUTABLE m4 DOC "Path to the m4 macro processor")
388 mark_as_advanced(M4_EXECUTABLE)
389 if(NOT M4_EXECUTABLE)
390   message("WARNING: Failed to find M4 macro processor.\n"
391     "Some of the tutorials will fail if it can't be found.")
392   set(M4_EXECUTABLE m4)
393 endif()
395 # on APPLE use cp -R -P -p, otherwise use cp -a
396 if(APPLE)
397   set(FOAM_CP_A_FLAGS "-R -P -p")
398 else()
399   set(FOAM_CP_A_FLAGS "-a")
400 endif()
402 # execinfo.h and cxxabi.h only work using GNU gcc and Debug config
403 # assume that if we have execinfo.h, cxxabi.h is also present.
404 if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_BUILD_TYPE STREQUAL Debug)
405   find_package(Execinfo)
406 endif()
408 # create the FOAMConfig.h file
409 configure_file(${CMAKE_SOURCE_DIR}/FOAMConfig.h.in
410   ${CMAKE_BINARY_DIR}/include/FOAMConfig.h @ONLY)
412 # on Solaris/SunOS fix up the shebangs
413 if(CMAKE_SYSTEM_NAME STREQUAL SunOS AND NOT EXISTS ${CMAKE_BINARY_DIR}/replaceAllShellSun.run)
414   message(STATUS "Fixing shell-interpreter for SunOS and Solaris")
415   execute_process(
416     COMMAND ${CMAKE_SOURCE_DIR}/data/utilities/replaceAllShellSun bin
417     COMMAND ${CMAKE_SOURCE_DIR}/data/utilities/replaceAllShellSun data
418     COMMAND ${CMAKE_SOURCE_DIR}/data/utilities/replaceAllShellSun tutorials
419     COMMAND ${CMAKE_SOURCE_DIR}/data/utilities/replaceAllShellSun doc
420     COMMAND ${CMAKE_COMMAND} -E touch${CMAKE_BINARY_DIR}/replaceAllShellSun.run
421     WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
422     )
423 endif()
425 # set up defines
426 set(FOAM_COMPILE_DEFINITIONS
427   -D${FOAM_PRECISION}
428   -DNoRepository
429   -D${FOAM_OS}
430   )
431 if(APPLE)
432   list(APPEND FOAM_COMPILE_DEFINITIONS -Ddarwin)
433 endif()
434 add_definitions(${FOAM_COMPILE_DEFINITIONS})
436 # set up include-directories for own headers
437 include_directories(${CMAKE_BINARY_DIR}/include)
439 # descend into the sources...
440 add_subdirectory(bin)
441 add_subdirectory(etc)
442 add_subdirectory(data)
443 add_subdirectory(src)
444 add_subdirectory(applications)
445 add_subdirectory(tutorials)
446 add_subdirectory(doc)
448 # export the library dependencies to the build tree
449 foam_export_targets_to_build_tree(${PROJECT_NAME}LibraryDepends)
450 export(PACKAGE ${PROJECT_NAME})
452 # write the doc index file and install it
453 foam_write_doc_index()
454 install(FILES
455   ${CMAKE_BINARY_DIR}/InstallFiles/data/DoxyDocIndex
456   DESTINATION ${FOAM_INSTALL_DATA_PATH}
457   COMPONENT data
458   )
460 # create ${PROJECT_NAME}Config.cmake ${PROJECT_NAME}Use.cmake,
461 # ${PROJECT_NAME}Utilities.cmake and ${PROJECT_NAME}WmakeCompatibility.cmake
462 # for the build and install tree
463 foam_configure_files(ConfigInstallFiles
464   "CMake/FOAMConfig.cmake.in==CMake/${PROJECT_NAME}Config.cmake"
465   "CMake/FOAMUse.cmake.in==CMake/${PROJECT_NAME}Use.cmake"
466   "CMake/FOAMWmakeCompatibility.cmake.in==CMake/${PROJECT_NAME}WmakeCompatibility.cmake"
467   COPYONLY
468   "CMake/FOAMUtilities.cmake==CMake/${PROJECT_NAME}Utilities.cmake"
469   )
471 # install the CMake config files
472 install(FILES
473   ${ConfigInstallFiles}
474   DESTINATION ${FOAM_INSTALL_CMAKE_PATH}
475   COMPONENT dev
476   )
478 # install the ${PROJECT_NAME}LibraryDepends.cmake file
479 install(EXPORT ${PROJECT_NAME}LibraryDepends
480   DESTINATION ${FOAM_INSTALL_CMAKE_PATH}
481   NAMESPACE FOAM_
482   COMPONENT dev
483   )
485 # pack things up
486 include(${CMAKE_SOURCE_DIR}/CMake/FOAMCPack.cmake)
488 # uninstall target
489 configure_file(
490   "${CMAKE_SOURCE_DIR}/CMake/Modules/cmake_uninstall.cmake.in"
491   "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake"
492   @ONLY
493   )
495 add_custom_target(uninstall
496   "${CMAKE_COMMAND}" -P "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake"
497   )
499 # print cool feature summary
500 foam_print_feature_summary()
502 # ------------------------- vim: set sw=2 sts=2 et: --------------- end-of-file