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 #-------------------------------------------------------------------------------
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
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 #-------------------------------------------------------------------------------
34 cmake_minimum_required( VERSION 2.6.0 )
37 set( FF_VERSION_MAJOR 0 )
38 set( FF_VERSION_MINOR 1 )
39 set( FF_VERSION_PATCH 0 )
40 set( FF_VERSION ${FF_VERSION_MAJOR}.${FF_VERSION_MINOR} )
41 set( FF_VERSION_FULL ${FF_VERSION}.${FF_VERSION_PATCH} )
43 # set up custom cmake module path
44 set( CMAKE_MODULE_PATH
45 ${CMAKE_SOURCE_DIR}/CMake
46 ${CMAKE_SOURCE_DIR}/CMake/Modules
49 # determine computer system
50 include( FFDetermineArch )
53 option( FF_DOUBLE_PRECISION "Compile FreeFOAM with double precision floating point arithmetics." ON )
54 if( FF_DOUBLE_PRECISION )
55 set( FF_PRECISION DP )
56 else( FF_DOUBLE_PRECISION )
57 set( FF_PRECISION SP )
58 endif( FF_DOUBLE_PRECISION )
60 # select whether we want to build framewors on Mac OS X
62 option( FF_BUILD_FRAMEWORK "Build frameworks on Mac OS X" OFF )
64 set( FF_BUILD_FRAMEWORK OFF )
66 mark_as_advanced( FF_BUILD_FRAMEWORK )
68 # we want shared libraries
69 set( BUILD_SHARED_LIBS SHARED )
71 # use a prefix for executables
72 set (EXECUTABLE_PREFIX "ff_" CACHE STRING "Prefix prepended to all program and script names")
73 mark_as_advanced( EXECUTABLE_PREFIX )
74 string( TOUPPER "${EXECUTABLE_PREFIX}" EXECUTABLE_PREFIX_UPPER )
76 # installation directories
77 set( FF_INSTALL_BIN_PATH bin CACHE STRING "Executables installation path (absolute or relative to CMAKE_INSTALL_PREFIX)" )
78 if( APPLE AND FF_BUILD_FRAMEWORK )
79 set( FF_INSTALL_FRAMEWORK_PATH /Library/Frameworks CACHE STRING "Framework installation path (absolute or relative to CMAKE_INSTALL_PREFIX)" )
80 endif( APPLE AND FF_BUILD_FRAMEWORK )
81 set( FF_INSTALL_LIB_PATH lib/${CMAKE_PROJECT_NAME}-${FF_VERSION_FULL} CACHE STRING "Library installation path (absolute or relative to CMAKE_INSTALL_PREFIX)" )
82 set( FF_INSTALL_HEADER_PATH include/${CMAKE_PROJECT_NAME}-${FF_VERSION_FULL} CACHE STRING "Header installation path (absolute or relative to CMAKE_INSTALL_PREFIX, not for frameworks)" )
83 set( FF_INSTALL_CONFIG_PATH etc/${CMAKE_PROJECT_NAME}-${FF_VERSION_FULL} CACHE STRING "Configuration files installation path (absolute or relative to CMAKE_INSTALL_PREFIX)" )
84 set( FF_INSTALL_DATA_PATH share/${CMAKE_PROJECT_NAME}-${FF_VERSION_FULL} CACHE STRING "Data files installation path (absolute or relative to CMAKE_INSTALL_PREFIX)" )
85 set( FF_INSTALL_DOC_PATH share/doc/${CMAKE_PROJECT_NAME}-${FF_VERSION_FULL} CACHE STRING "Documentation files installation path (absolute or relative to CMAKE_INSTALL_PREFIX)" )
86 set( FF_INSTALL_MAN_PATH share/man CACHE STRING "Man-pages installation path (absolute or relative to CMAKE_INSTALL_PREFIX)" )
87 set( FF_INSTALL_TUTORIALS_PATH share/doc/${CMAKE_PROJECT_NAME}-${FF_VERSION_FULL} CACHE STRING "Tutorials installation path (absolute or relative to CMAKE_INSTALL_PREFIX)" )
88 set( FF_INSTALL_CMAKE_PATH share/${CMAKE_PROJECT_NAME}-${FF_VERSION_FULL}/CMake CACHE STRING "CMake configuration files installation path (absolute or relative to CMAKE_INSTALL_PREFIX)" )
89 set( FF_INSTALL_PVFOAMREADER_PATH lib/${CMAKE_PROJECT_NAME}-${FF_VERSION_FULL}/plugins/PVFoamReader CACHE STRING "ParaView2 OpenFOAM-reader plugin installation path" )
90 set( FF_INSTALL_PV3FOAMREADER_PATH lib/${CMAKE_PROJECT_NAME}-${FF_VERSION_FULL}/plugins/PV3FoamReader CACHE STRING "ParaView3 OpenFOAM-reader plugin installation path" )
91 set( FF_INSTALL_USERDFOAM_PATH lib/${CMAKE_PROJECT_NAME}-${FF_VERSION_FULL}/plugins/userd-foam CACHE STRING "Ensight OpenFOAM-reader plugin installation path" )
92 mark_as_advanced( FF_INSTALL_BIN_PATH FF_INSTALL_FRAMEWORK_PATH FF_INSTALL_LIB_PATH FF_INSTALL_HEADER_PATH
93 FF_INSTALL_CONFIG_PATH FF_INSTALL_DATA_PATH FF_INSTALL_MAN_PATH FF_INSTALL_DOC_PATH FF_INSTALL_TUTORIALS_PATH
94 FF_INSTALL_CMAKE_PATH FF_INSTALL_PVFOAMREADER_PATH FF_INSTALL_PV3FOAMREADER_PATH FF_INSTALL_USERDFOAM_PATH )
97 foreach( _p FF_INSTALL_BIN_PATH FF_INSTALL_LIB_PATH FF_INSTALL_FRAMEWORK_PATH
98 FF_INSTALL_HEADER_PATH FF_INSTALL_CONFIG_PATH FF_INSTALL_DATA_PATH FF_INSTALL_DOC_PATH
99 FF_INSTALL_MAN_PATH FF_INSTALL_TUTORIALS_PATH FF_INSTALL_CMAKE_PATH )
100 if( NOT IS_ABSOLUTE ${${_p}} )
101 set( ${_p} "${CMAKE_INSTALL_PREFIX}/${${_p}}" )
102 endif( NOT IS_ABSOLUTE ${${_p}} )
105 # determine the INSTALL_NAME_DIR of potential frameworks
106 if( APPLE AND FF_BUILD_FRAMEWORK )
107 set( FF_FRAMEWORK_INSTALL_NAME_DIR ${FF_INSTALL_FRAMEWORK_PATH} )
108 else( APPLE AND FF_BUILD_FRAMEWORK )
109 set( FF_FRAMEWORK_INSTALL_NAME_DIR ${FF_INSTALL_LIB_PATH} )
110 endif( APPLE AND FF_BUILD_FRAMEWORK )
112 # select html documentation browser (try a few well known ones for default)
113 # have to loop, because find_program( HTML_DOC_BROWSER NAMES ... ) garbles things up
114 foreach( browser open gnome-open kde-open x-www-browser www-browser
115 firefox epiphany konqueror w3m lynx launch open )
116 find_program( HTML_DOC_BROWSER ${browser}
117 DOC "Program to open an HTML file" )
118 if( HTML_DOC_BROWSER )
120 endif( HTML_DOC_BROWSER )
121 endforeach( browser )
122 if( NOT HTML_DOC_BROWSER )
123 message( STATUS "Failed to find a program to open HTML pages with (a.k.a a browser). Point HTML_DOC_BROWSER to a suitable program." )
124 set( HTML_DOC_BROWSER "ECHO" CACHE STRING "Command to open an HTML file (ECHO will print it to STDOUT)" FORCE )
125 endif( NOT HTML_DOC_BROWSER )
126 set( FF_HTML_DOC_BROWSER_COMMAND "\${HTML_DOC_BROWSER} %f" CACHE STRING "Command to open an HTML file" )
127 string( CONFIGURE "${FF_HTML_DOC_BROWSER_COMMAND}" FF_HTML_DOC_BROWSER_COMMAND ESCAPE_QUOTES )
128 mark_as_advanced( HTML_DOC_BROWSER FF_HTML_DOC_BROWSER_COMMAND )
130 # set up the RPATH for installation
131 set( CMAKE_INSTALL_RPATH ${FF_INSTALL_LIB_PATH} )
133 # we want executables and libraries in uniform places
134 set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
135 set( FF_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/FreeFOAM-${FF_VERSION_FULL} )
136 set( FF_FRAMEWORK_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Library/Frameworks )
137 if( FF_BUILD_FRAMEWORK )
138 set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${FF_FRAMEWORK_OUTPUT_DIRECTORY} )
139 else( FF_BUILD_FRAMEWORK )
140 set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${FF_LIBRARY_OUTPUT_DIRECTORY} )
141 endif( FF_BUILD_FRAMEWORK )
142 set( FF_ARCHIVE_OUTPUT_DIRECTORY ${FF_LIBRARY_OUTPUT_DIRECTORY} )
144 # find parallel libraries
145 option( FF_USE_MPI "Build ${CMAKE_PROJECT} against MPI parallel libraries" ON )
147 find_package( MPI REQUIRED )
149 if( CMAKE_SYSTEM_NAME STREQUAL Linux )
150 option( FF_USE_GAMMA "Build ${CMAKE_PROJECT} against GAMMA parallel libraries" OFF )
152 find_package( GAMMA REQUIRED )
153 endif( FF_USE_GAMMA )
154 endif( CMAKE_SYSTEM_NAME STREQUAL Linux )
155 if( MPI_FOUND OR GAMMA_FOUND )
156 set( FF_USE_PARALLEL TRUE )
157 endif( MPI_FOUND OR GAMMA_FOUND )
158 mark_as_advanced( FF_USE_MPI FF_USE_GAMMA )
161 if(EXISTS ${CMAKE_ROOT}/Modules/FindFLEX.cmake)
162 find_package( FLEX REQUIRED )
163 else(EXISTS ${CMAKE_ROOT}/Modules/FindFLEX.cmake)
164 find_package( FLEXFreeFOAM REQUIRED )
165 endif(EXISTS ${CMAKE_ROOT}/Modules/FindFLEX.cmake)
166 include_directories( ${FLEX_INCLUDE_DIRS} )
167 set( FLEX_CXX_FLAGS "-+" CACHE STRING "Flags used by the flex compiler for flex++ targets." )
168 mark_as_advanced( FLEX_CXX_FLAGS )
171 find_package( ZLIB REQUIRED )
173 message( SEND_ERROR "zlib is required! Override ZLIB_* settings [advanced]." )
174 endif( NOT ZLIB_FOUND )
177 find_package( Readline )
180 include( FFConfigureFiles )
181 include( FFDetectChangedValue )
182 include( FFExportTargetsToBuildTree )
183 include( FFAddExecutableToDocIndex )
184 include( FFLinkLoadableLibrary )
185 include( FFCreateManPage )
187 # find metis (recent distros have it in their repository, so default to search for that)
188 option( FF_BUILD_PRIVATE_METIS "Download and compile private METIS library instead of searching the system for it" OFF )
189 ff_detect_changed_value( FF_BUILD_PRIVATE_METIS_CHANGED FF_BUILD_PRIVATE_METIS
190 METIS_INCLUDE_DIR METIS_LIBRARY )
191 if( FF_BUILD_PRIVATE_METIS )
192 find_package( Threads REQUIRED )
193 add_subdirectory( ThirdParty/METIS )
194 else( FF_BUILD_PRIVATE_METIS )
195 find_package( Metis REQUIRED )
196 if( NOT METIS_FOUND )
197 message( SEND_ERROR "metis is required! Override METIS_* settings [advanced]." )
198 endif( NOT METIS_FOUND )
199 if( METIS_REQUIRES_MPI AND NOT FF_USE_MPI )
200 message( SEND_ERROR "Your metis implementation requires FF_USE_MPI to be enabled. If you don't have/want MPI, enable FF_BUILD_PRIVATE_METIS instead." )
201 endif( METIS_REQUIRES_MPI AND NOT FF_USE_MPI )
202 endif( FF_BUILD_PRIVATE_METIS )
204 # find ParMetis (recent distros have it in their repository, so default to search for that)
206 option( FF_BUILD_PRIVATE_PARMETIS "Download and compile private ParMetis library instead of searching the system for it" OFF )
207 ff_detect_changed_value( FF_BUILD_PRIVATE_PARMETIS_CHANGED FF_BUILD_PRIVATE_PARMETIS
208 PARMETIS_INCLUDE_DIR PARMETIS_metis_LIBRARY PARMETIS_parmetis_LIBRARY )
209 if( FF_BUILD_PRIVATE_PARMETIS )
210 add_subdirectory( ThirdParty/ParMetis )
211 else( FF_BUILD_PRIVATE_PARMETIS )
212 find_package( ParMetis REQUIRED )
213 if( NOT PARMETIS_FOUND )
214 message( SEND_ERROR "ParMetis is required! Override PARMETIS_* settings [advanced]." )
215 endif( NOT PARMETIS_FOUND )
216 endif( FF_BUILD_PRIVATE_PARMETIS )
218 message( STATUS "NOTE: Not using ParMetis because FF_USE_MPI not selected." )
221 # find SCOTCH (recent distros have it in their repository, so default to search for that)
222 option( FF_BUILD_PRIVATE_SCOTCH "Download and compile private SCOTCH library instead of searching the system for it" OFF )
223 ff_detect_changed_value( FF_BUILD_PRIVATE_SCOTCH_CHANGED FF_BUILD_PRIVATE_SCOTCH
224 SCOTCH_INCLUDE_DIR SCOTCH_LIBRARY )
225 if( FF_BUILD_PRIVATE_SCOTCH )
226 find_package( Threads REQUIRED )
227 add_subdirectory( ThirdParty/SCOTCH )
228 else( FF_BUILD_PRIVATE_SCOTCH )
229 find_package( SCOTCH REQUIRED )
230 if( NOT SCOTCH_FOUND )
231 message( SEND_ERROR "SCOTCH is required! Override SCOTCH_* settings [advanced]." )
232 endif( NOT SCOTCH_FOUND )
233 set( SCOTCH_LIBRARIES ${SCOTCH_LIBRARY} ${SCOTCH_scotcherrexit_LIBRARY} )
234 endif( FF_BUILD_PRIVATE_SCOTCH )
236 # do not enable (par)mgridgen by default (licensing issues)
237 option( FF_ENABLE_PARMGRIDGEN "Enable PARMGRIDGEN support (required by the MGridGen GAMG agglomerator option). LICENSE UNCLEAR" OFF )
238 if( FF_ENABLE_PARMGRIDGEN )
239 # find mgridgen (not commonly available, default to private build)
240 option( FF_BUILD_PRIVATE_PARMGRIDGEN "Download and compile private PARMGRIDGEN library instead of searching the system for it" OFF )
241 ff_detect_changed_value( FF_BUILD_PRIVATE_PARMGRIDGEN_CHANGED FF_BUILD_PRIVATE_PARMGRIDGEN
242 MGRIDGEN_INCLUDE_DIR MGRIDGEN_LIBRARY )
243 if( FF_BUILD_PRIVATE_PARMGRIDGEN )
244 add_subdirectory( ThirdParty/PARMGRIDGEN )
245 else( FF_BUILD_PRIVATE_PARMGRIDGEN )
246 if( NOT FF_DOUBLE_PRECISION )
247 set( MGRIDGEN_USE_REAL ON )
248 endif( NOT FF_DOUBLE_PRECISION )
249 find_package( MGRIDGEN REQUIRED )
250 if( NOT MGRIDGEN_FOUND )
251 message( SEND_ERROR "MGRIDGEN is required! Override MGRIDGEN_* settings [advanced]." )
252 endif( NOT MGRIDGEN_FOUND )
253 endif( FF_BUILD_PRIVATE_PARMGRIDGEN )
254 endif( FF_ENABLE_PARMGRIDGEN )
256 # do not enable libccmio by default (proprietary license)
257 option( FF_ENABLE_CCMIO "Enable libccmio support (required by the ccm26ToFoam grid converter). REQUIRES PERMISSION BY CDADAPCO!" OFF )
258 if( FF_ENABLE_CCMIO )
259 # find ccmio (not commonly available, default to private build)
260 option( FF_BUILD_PRIVATE_CCMIO "Download and compile private CCMIO library instead of searching the system for it" OFF )
261 ff_detect_changed_value( FF_BUILD_PRIVATE_CCMIO_CHANGED FF_BUILD_PRIVATE_CCMIO
262 CCMIO_INCLUDE_DIR CCMIO_LIBRARY )
263 if( FF_BUILD_PRIVATE_CCMIO )
264 add_subdirectory( ThirdParty/ccmio )
265 else( FF_BUILD_PRIVATE_CCMIO )
266 find_package( Ccmio REQUIRED )
267 if( NOT CCMIO_FOUND )
268 message( SEND_ERROR "ccmio is required! Override CCMIO_* settings [advanced]." )
269 endif( NOT CCMIO_FOUND )
270 endif( FF_BUILD_PRIVATE_CCMIO )
271 endif( FF_ENABLE_CCMIO )
273 mark_as_advanced( FF_BUILD_PRIVATE_CCMIO FF_BUILD_PRIVATE_METIS FF_BUILD_PRIVATE_PARMETIS
274 FF_BUILD_PRIVATE_PARMGRIDGEN FF_DOUBLE_PRECISION FF_ENABLE_PARMGRIDGEN FF_ENABLE_CCMIO )
276 # ask user whether she wants to build ParaView plugins
277 option( FF_BUILD_PARAVIEW_PLUGINS "Build the ParaView plugins. Requires a ParaView build tree." OFF )
278 if( FF_BUILD_PARAVIEW_PLUGINS )
279 # find ParaView, which also find the VTK which has been used to build ParaView
280 find_package( ParaView REQUIRED )
281 if( NOT ParaView_FOUND )
282 message( FATAL_ERROR "Failed to find the ParaView build tree. Specify ParaView_DIR or disable FF_BUILD_PARAVIEW_PLUGINS" )
283 endif( NOT ParaView_FOUND )
284 # find the installed ParaView executable
286 FF_PARAVIEW3_APP NAMES paraview paraview.app
287 PATHS ${ParaView_DIR}/bin
288 DOC "Path to the ParaView 3 executable (or application bundle on Mac OS X)"
290 if( NOT FF_PARAVIEW3_APP )
291 message( FATAL_ERROR "Failed to find the ParaView 3 executable or application bundle" )
292 endif( NOT FF_PARAVIEW3_APP )
293 endif( FF_BUILD_PARAVIEW_PLUGINS )
294 mark_as_advanced( FF_BUILD_PARAVIEW_PLUGINS FF_PARAVIEW3_APP )
296 # figure out default Pstream library
298 set( _FF_DEFAULT_PSTREAM mpi )
299 elseif( FF_USE_GAMMA )
300 set( _FF_DEFAULT_PSTREAM gamma )
302 set( _FF_DEFAULT_PSTREAM dummy )
304 set( FF_DEFAULT_PSTREAM ${_FF_DEFAULT_PSTREAM} CACHE STRING "Default Pstream library implementation [dummy|mpi|gamma]" )
305 mark_as_advanced( FF_DEFAULT_PSTREAM )
307 # ask user whether she wants to build Doxygen docs
308 option( FF_ENABLE_DOXYGEN_DOCS "Build the Doxygen documentation" OFF )
309 if( FF_ENABLE_DOXYGEN_DOCS )
310 find_package( Doxygen REQUIRED )
311 option( FF_DOXYDOCS_FOR_SF "Build the Doxygen docs for deployment on SourceForge" OFF )
312 mark_as_advanced( FF_DOXYDOCS_FOR_SF )
313 endif( FF_ENABLE_DOXYGEN_DOCS )
314 mark_as_advanced( FF_ENABLE_DOXYGEN_DOCS )
316 # ask user whether she prefers local or www docs
317 option( FF_USE_LOCAL_DOXYGEN_DOCS
318 "Use the local Doxygen documentation instead of the one on http://freefoam.sf.net/doc/Doxygen/html" OFF )
319 mark_as_advanced( FF_USE_LOCAL_DOXYGEN_DOCS )
321 # find m4 macro processor
322 find_program( M4_EXECUTABLE m4 DOC "Path to the m4 macro processor" )
323 mark_as_advanced( M4_EXECUTABLE )
324 if( NOT M4_EXECUTABLE )
325 message( "WARNING: Failed to find M4 macro processor. Some of the tutorials will fail if it can't be found." )
326 set( M4_EXECUTABLE m4 )
327 endif( NOT M4_EXECUTABLE )
329 # on APPLE use cp -R -P -p, otherwise use cp -a
331 set( FF_CP_A_FLAGS "-R -P -p" )
333 set( FF_CP_A_FLAGS "-a" )
336 # execinfo.h and cxxabi.h only work using GNU gcc and Debug config
337 # assume that if we have execinfo.h, cxxabi.h is also present.
338 if( CMAKE_COMPILER_IS_GNUCXX AND CMAKE_BUILD_TYPE STREQUAL Debug )
339 find_package( Execinfo )
340 endif( CMAKE_COMPILER_IS_GNUCXX AND CMAKE_BUILD_TYPE STREQUAL Debug )
342 # create the FreeFOAMConfig.h file
343 configure_file( ${CMAKE_SOURCE_DIR}/FreeFOAMConfig.h.in
344 ${CMAKE_BINARY_DIR}/include/FreeFOAMConfig.h @ONLY )
346 # on Solaris/SunOS fix up the shebangs
347 if( CMAKE_SYSTEM_NAME STREQUAL SunOS AND NOT EXISTS ${CMAKE_BINARY_DIR}/replaceAllShellSun.run )
348 message( STATUS "Fixing shell-interpreter for SunOS and Solaris" )
350 COMMAND ${CMAKE_SOURCE_DIR}/data/utilities/replaceAllShellSun bin
351 COMMAND ${CMAKE_SOURCE_DIR}/data/utilities/replaceAllShellSun data
352 COMMAND ${CMAKE_SOURCE_DIR}/data/utilities/replaceAllShellSun tutorials
353 COMMAND ${CMAKE_SOURCE_DIR}/data/utilities/replaceAllShellSun doc
354 COMMAND ${CMAKE_COMMAND} -E touch${CMAKE_BINARY_DIR}/replaceAllShellSun.run
355 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
357 endif( CMAKE_SYSTEM_NAME STREQUAL SunOS AND NOT EXISTS ${CMAKE_BINARY_DIR}/replaceAllShellSun.run )
366 # tools for building the include tree
367 include( createIncludeWrappers )
368 include_directories( ${CMAKE_BINARY_DIR}/include )
370 # descend into the sources...
371 add_subdirectory( bin )
372 add_subdirectory( etc )
373 add_subdirectory( data )
374 add_subdirectory( src )
375 add_subdirectory( applications )
376 add_subdirectory( doc )
377 add_subdirectory( tutorials )
379 # export the library dependencies to the build tree
380 ff_export_targets_to_build_tree()
382 # write the doc index file and install it
385 ${CMAKE_BINARY_DIR}/InstallFiles/data/DoxyDocIndex
386 DESTINATION ${FF_INSTALL_DATA_PATH}
390 # configure man-page template creation script
391 # MUST be after add_subdirectory calls!
392 string( REPLACE ";" "\"\n \"" MAN_SRCS "\"${MAN_SRCS}\"" )
393 string( REPLACE ";" "\"\n \"" MAN_NAMES "\"${MAN_NAMES}\"" )
394 configure_file( CMake/update_man_templates.cmake.in
395 ${CMAKE_BINARY_DIR}/update_man_templates.cmake
399 # export build settings and library dependencies
400 include( CMakeExportBuildSettings )
401 cmake_export_build_settings( ${FF_LIBRARY_OUTPUT_DIRECTORY}/FreeFOAMBuildSettings.cmake )
403 # create FreeFOAMConfig.cmake for the build tree
404 set( CONFIG_DEFINITIONS -DNoRepository -D${FF_OS} -D${FF_PRECISION} )
406 list( APPEND CONFIG_DEFINITIONS -Ddarwin )
408 set( CONFIG_HEADER_PATH ${CMAKE_BINARY_DIR}/include )
409 set( CONFIG_LIBRARY_PATH ${FF_LIBRARY_OUTPUT_DIRECTORY} )
410 if( APPLE AND FF_BUILD_FRAMEWORK )
411 set( CONFIG_FRAMEWORK_PATH "${FF_FRAMEWORK_OUTPUT_DIRECTORY}" )
412 endif( APPLE AND FF_BUILD_FRAMEWORK )
413 set( CONFIG_USE_FILE_PATH ${CMAKE_SOURCE_DIR} )
415 ${CMAKE_SOURCE_DIR}/FreeFOAMConfig.cmake.in
416 ${CMAKE_BINARY_DIR}/FreeFOAMConfig.cmake
420 # create FreeFOAMConfig.cmake for the install tree
421 set( CONFIG_HEADER_PATH "${FF_INSTALL_HEADER_PATH}" )
422 set( CONFIG_LIBRARY_PATH "${FF_INSTALL_LIB_PATH}" )
423 if( APPLE AND FF_BUILD_FRAMEWORK )
424 set( CONFIG_FRAMEWORK_PATH "${FF_INSTALL_FRAMEWORK_PATH}" )
425 endif( APPLE AND FF_BUILD_FRAMEWORK )
426 set( CONFIG_USE_FILE_PATH "${FF_INSTALL_LIB_PATH}" )
428 ${CMAKE_SOURCE_DIR}/FreeFOAMConfig.cmake.in
429 ${CMAKE_BINARY_DIR}/InstallFiles/FreeFOAMConfig.cmake
433 # install the CMake config files
436 ${CMAKE_BINARY_DIR}/InstallFiles/FreeFOAMConfig.cmake
437 ${FF_LIBRARY_OUTPUT_DIRECTORY}/FreeFOAMBuildSettings.cmake
438 DESTINATION ${FF_INSTALL_CMAKE_PATH}
442 # install the FreeFOAMLibraryDepends.cmake file
443 install( EXPORT FreeFOAMLibraryDepends
444 DESTINATION ${FF_INSTALL_CMAKE_PATH}
450 include( FreeFOAMCPack )
454 "${CMAKE_SOURCE_DIR}/CMake/Modules/cmake_uninstall.cmake.in"
455 "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake"
459 add_custom_target( uninstall
460 "${CMAKE_COMMAND}" -P "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake"
463 # ------------------------- vim: set sw=2 sts=2 et: --------------- end-of-file