FIX: Buggy library output directory for plugins
[freefoam.git] / CMakeLists.txt
blobbae060e284adf030dbf87cba5ead72c02c7aaf81
1 #-------------------------------------------------------------------------------
2 #                ______             ______ ____          __  __
3 #               |  ____|           |  ____/ __ \   /\   |  \/  |
4 #               | |__ _ __ ___  ___| |__ | |  | | /  \  | \  / |
5 #               |  __| '__/ _ \/ _ \  __|| |  | |/ /\ \ | |\/| |
6 #               | |  | | |  __/  __/ |   | |__| / ____ \| |  | |
7 #               |_|  |_|  \___|\___|_|    \____/_/    \_\_|  |_|
9 #                   FreeFOAM: The Cross-Platform CFD Toolkit
11 # Copyright (C) 2008 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 project( FreeFOAM )
34 cmake_minimum_required( VERSION 2.6.0 )
36 # version information
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
47   )
49 # select precision
50 option( FF_DOUBLE_PRECISION "Compile FreeFOAM with double precision floating point arithmetics." ON )
51 if( FF_DOUBLE_PRECISION )
52   set( FF_PRECISION DP )
53 else( FF_DOUBLE_PRECISION )
54   set( FF_PRECISION SP )
55 endif( FF_DOUBLE_PRECISION )
57 # select whether we want to build framewors on Mac OS X
58 if( APPLE )
59   option( FF_BUILD_FRAMEWORK "Build frameworks on Mac OS X" OFF )
60 else( APPLE )
61   set( FF_BUILD_FRAMEWORK OFF )
62 endif( APPLE )
63 mark_as_advanced( FF_BUILD_FRAMEWORK )
65 # we want shared libraries
66 set( BUILD_SHARED_LIBS SHARED )
68 # use a prefix for executables
69 set (EXECUTABLE_PREFIX "ff_" CACHE STRING "Prefix prepended to all program and script names")
70 mark_as_advanced( EXECUTABLE_PREFIX )
72 # installation directories
73 set( FF_INSTALL_BIN_PATH bin CACHE STRING "Executables installation path (absolute or relative to CMAKE_INSTALL_PREFIX)" )
74 if( APPLE AND FF_BUILD_FRAMEWORK )
75   set( FF_INSTALL_FRAMEWORK_PATH /Library/Frameworks CACHE STRING "Framework installation path (absolute or relative to CMAKE_INSTALL_PREFIX)" )
76 endif( APPLE AND FF_BUILD_FRAMEWORK )
77 set( FF_INSTALL_LIB_PATH lib/${CMAKE_PROJECT_NAME}-${FF_VERSION_FULL} CACHE STRING "Library installation path (absolute or relative to CMAKE_INSTALL_PREFIX)" )
78 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)" )
79 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)" )
80 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)" )
81 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)" )
82 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)" )
83 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)" )
84 set( FF_INSTALL_PVFOAMREADER_PATH lib/${CMAKE_PROJECT_NAME}-${FF_VERSION_FULL}/plugins/PVFoamReader CACHE STRING "ParaView2 OpenFOAM-reader plugin installation path" )
85 set( FF_INSTALL_PV3FOAMREADER_PATH lib/${CMAKE_PROJECT_NAME}-${FF_VERSION_FULL}/plugins/PV3FoamReader CACHE STRING "ParaView3 OpenFOAM-reader plugin installation path" )
86 set( FF_INSTALL_USERDFOAM_PATH lib/${CMAKE_PROJECT_NAME}-${FF_VERSION_FULL}/plugins/userd-foam CACHE STRING "Ensight OpenFOAM-reader plugin installation path" )
87 mark_as_advanced( FF_INSTALL_BIN_PATH FF_INSTALL_FRAMEWORK_PATH FF_INSTALL_LIB_PATH FF_INSTALL_HEADER_PATH
88   FF_INSTALL_CONFIG_PATH FF_INSTALL_DATA_PATH FF_INSTALL_DOC_PATH FF_INSTALL_TUTORIALS_PATH FF_INSTALL_CMAKE_PATH
89   FF_INSTALL_PVFOAMREADER_PATH FF_INSTALL_PV3FOAMREADER_PATH FF_INSTALL_USERDFOAM_PATH )
91 # make absolute paths
92 foreach( _p FF_INSTALL_BIN_PATH FF_INSTALL_LIB_PATH FF_INSTALL_FRAMEWORK_PATH
93     FF_INSTALL_HEADER_PATH FF_INSTALL_CONFIG_PATH FF_INSTALL_DATA_PATH FF_INSTALL_DOC_PATH
94     FF_INSTALL_TUTORIALS_PATH FF_INSTALL_CMAKE_PATH )
95   if( NOT IS_ABSOLUTE ${${_p}} )
96     set( ${_p} "${CMAKE_INSTALL_PREFIX}/${${_p}}" )
97   endif( NOT IS_ABSOLUTE ${${_p}} )
98 endforeach( _p )
100 # determine the INSTALL_NAME_DIR of potential frameworks
101 if( APPLE AND FF_BUILD_FRAMEWORK )
102   set( FF_FRAMEWORK_INSTALL_NAME_DIR ${FF_INSTALL_FRAMEWORK_PATH} )
103 else( APPLE AND FF_BUILD_FRAMEWORK )
104   set( FF_FRAMEWORK_INSTALL_NAME_DIR ${FF_INSTALL_LIB_PATH} )
105 endif( APPLE AND FF_BUILD_FRAMEWORK )
107 # select html documentation browser (try a few well known ones for default)
108 # have to loop, because find_program( HTML_DOC_BROWSER NAMES ... ) garbles things up
109 foreach( browser open kde-open gnome-open x-www-browser www-browser firefox epiphany konqueror w3m lynx open )
110   find_program( HTML_DOC_BROWSER ${browser}
111     DOC "Program to open an HTML file" )
112   if( HTML_DOC_BROWSER )
113     set( FF_HTML_DOC_BROWSER_COMMAND "${HTML_DOC_BROWSER} %f" CACHE STRING "Command to open an HTML file" )
114     break()
115   endif( HTML_DOC_BROWSER )
116 endforeach( browser )
117 if( NOT HTML_DOC_BROWSER )
118   message( SEND_ERROR "Failed to find a program to open HTML pages with (a.k.a a browser). Point HTML_DOC_BROWSER to a suitable program." )
119 endif( NOT HTML_DOC_BROWSER )
120 mark_as_advanced( HTML_DOC_BROWSER FF_HTML_DOC_BROWSER_COMMAND )
122 # set up the RPATH for installation
123 set( CMAKE_INSTALL_RPATH ${FF_INSTALL_LIB_PATH} )
125 # we want executables and libraries in uniform places
126 set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
127 set( FF_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/FreeFOAM-${FF_VERSION_FULL} )
128 set( FF_FRAMEWORK_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Library/Frameworks )
129 if( FF_BUILD_FRAMEWORK )
130   set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${FF_FRAMEWORK_OUTPUT_DIRECTORY} )
131 else( FF_BUILD_FRAMEWORK )
132   set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${FF_LIBRARY_OUTPUT_DIRECTORY} )
133 endif( FF_BUILD_FRAMEWORK )
134 set( FF_ARCHIVE_OUTPUT_DIRECTORY ${FF_LIBRARY_OUTPUT_DIRECTORY} )
136 # determine computer system
137 include( FFDetermineArch )
139 # find parallel libraries
140 option( FF_USE_MPI "Build ${CMAKE_PROJECT} against MPI parallel libraries" ON )
141 if( FF_USE_MPI )
142   find_package( MPI REQUIRED )
143 endif( FF_USE_MPI )
144 option( FF_USE_PVM "Build ${CMAKE_PROJECT} against PVM parallel libraries" OFF )
145 if( FF_USE_PVM )
146   find_package( PVM REQUIRED )
147 endif( FF_USE_PVM )
148 if( CMAKE_SYSTEM_NAME STREQUAL Linux )
149 option( FF_USE_GAMMA "Build ${CMAKE_PROJECT} against GAMMA parallel libraries" OFF )
150 if( FF_USE_GAMMA )
151   find_package( GAMMA REQUIRED )
152 endif( FF_USE_GAMMA )
153 endif( CMAKE_SYSTEM_NAME STREQUAL Linux )
154 if( MPI_FOUND OR PVM_FOUND OR GAMMA_FOUND )
155   set( FF_USE_PARALLEL TRUE )
156 endif( MPI_FOUND OR PVM_FOUND OR GAMMA_FOUND )
157 mark_as_advanced( FF_USE_MPI FF_USE_PVM FF_USE_GAMMA )
159 # find flex
160 find_package( FLEX REQUIRED )
161 set( FLEX_CXX_FLAGS "-+" CACHE STRING "Flags used by the flex compiler for flex++ targets." )
162 mark_as_advanced( FLEX_CXX_FLAGS )
164 # find zlib
165 find_package( ZLIB REQUIRED )
166 if( NOT ZLIB_FOUND )
167   message( SEND_ERROR "zlib is required! Override ZLIB_* settings [advanced]." )
168 endif( NOT ZLIB_FOUND )
170 # utility
171 include( FFConfigureFiles )
172 include( FFDetectChangedValue )
173 include( FFExportTargetsToBuildTree )
174 include( FFLinkLoadableLibrary )
176 # find metis (recent distros have it in their repository, so default to search for that)
177 option( FF_BUILD_PRIVATE_METIS "Download and compile private METIS library instead of searching the system for it" OFF )
178 ff_detect_changed_value( FF_BUILD_PRIVATE_METIS_CHANGED FF_BUILD_PRIVATE_METIS
179   METIS_INCLUDE_DIR METIS_LIBRARY )
180 if( FF_BUILD_PRIVATE_METIS )
181   find_package( Threads REQUIRED )
182   add_subdirectory( ThirdParty/METIS )
183 else( FF_BUILD_PRIVATE_METIS )
184   find_package( Metis REQUIRED )
185   if( NOT METIS_FOUND )
186     message( SEND_ERROR "metis is required! Override METIS_* settings [advanced]." )
187   endif( NOT METIS_FOUND )
188   if( METIS_REQUIRES_MPI AND NOT FF_USE_MPI )
189     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." )
190   endif( METIS_REQUIRES_MPI AND NOT FF_USE_MPI )
191 endif( FF_BUILD_PRIVATE_METIS )
193 # find ParMetis (recent distros have it in their repository, so default to search for that)
194 if( FF_USE_MPI )
195   option( FF_BUILD_PRIVATE_PARMETIS "Download and compile private ParMetis library instead of searching the system for it" OFF )
196   ff_detect_changed_value( FF_BUILD_PRIVATE_PARMETIS_CHANGED FF_BUILD_PRIVATE_PARMETIS
197     PARMETIS_INCLUDE_DIR PARMETIS_metis_LIBRARY PARMETIS_parmetis_LIBRARY )
198   if( FF_BUILD_PRIVATE_PARMETIS )
199     add_subdirectory( ThirdParty/ParMetis )
200   else( FF_BUILD_PRIVATE_PARMETIS )
201     find_package( ParMetis REQUIRED )
202     if( NOT PARMETIS_FOUND )
203       message( SEND_ERROR "ParMetis is required! Override PARMETIS_* settings [advanced]." )
204     endif( NOT PARMETIS_FOUND )
205   endif( FF_BUILD_PRIVATE_PARMETIS )
206 else( FF_USE_MPI )
207   message( STATUS "NOTE: Not using ParMetis because FF_USE_MPI not selected." )
208 endif( FF_USE_MPI )
210 # do not enable (par)mgridgen by default (licensing issues)
211 option( FF_ENABLE_PARMGRIDGEN "Enable PARMGRIDGEN support (required by the MGridGen GAMG agglomerator option). LICENSE UNCLEAR" OFF )
212 if( FF_ENABLE_PARMGRIDGEN )
213   # find mgridgen (not commonly available, default to private build)
214   option( FF_BUILD_PRIVATE_PARMGRIDGEN "Download and compile private PARMGRIDGEN library instead of searching the system for it" OFF )
215   ff_detect_changed_value( FF_BUILD_PRIVATE_PARMGRIDGEN_CHANGED FF_BUILD_PRIVATE_PARMGRIDGEN
216     MGRIDGEN_INCLUDE_DIR MGRIDGEN_LIBRARY )
217   if( FF_BUILD_PRIVATE_PARMGRIDGEN )
218     add_subdirectory( ThirdParty/PARMGRIDGEN )
219   else( FF_BUILD_PRIVATE_PARMGRIDGEN )
220     if( NOT FF_DOUBLE_PRECISION )
221       set( MGRIDGEN_USE_REAL ON )
222     endif( NOT FF_DOUBLE_PRECISION )
223     find_package( MGRIDGEN REQUIRED )
224     if( NOT MGRIDGEN_FOUND )
225       message( SEND_ERROR "MGRIDGEN is required! Override MGRIDGEN_* settings [advanced]." )
226     endif( NOT MGRIDGEN_FOUND )
227   endif( FF_BUILD_PRIVATE_PARMGRIDGEN )
228 endif( FF_ENABLE_PARMGRIDGEN )
230 # do not enable libccmio by default (proprietary license)
231 option( FF_ENABLE_CCMIO "Enable libccmio support (required by the ccm26ToFoam grid converter). REQUIRES PERMISSION BY CDADAPCO!" OFF )
232 if( FF_ENABLE_CCMIO )
233   # find ccmio (not commonly available, default to private build)
234   option( FF_BUILD_PRIVATE_CCMIO "Download and compile private CCMIO library instead of searching the system for it" OFF )
235   ff_detect_changed_value( FF_BUILD_PRIVATE_CCMIO_CHANGED FF_BUILD_PRIVATE_CCMIO
236     CCMIO_INCLUDE_DIR CCMIO_LIBRARY )
237   if( FF_BUILD_PRIVATE_CCMIO )
238     add_subdirectory( ThirdParty/ccmio )
239   else( FF_BUILD_PRIVATE_CCMIO )
240     find_package( Ccmio REQUIRED )
241     if( NOT CCMIO_FOUND )
242       message( SEND_ERROR "ccmio is required! Override CCMIO_* settings [advanced]." )
243     endif( NOT CCMIO_FOUND )
244   endif( FF_BUILD_PRIVATE_CCMIO )
245 endif( FF_ENABLE_CCMIO )
247 mark_as_advanced( FF_BUILD_PRIVATE_CCMIO FF_BUILD_PRIVATE_METIS FF_BUILD_PRIVATE_PARMETIS
248   FF_BUILD_PRIVATE_PARMGRIDGEN FF_DOUBLE_PRECISION FF_ENABLE_PARMGRIDGEN FF_ENABLE_CCMIO )
250 # ask user whether she wants to build ParaView plugins
251 option( FF_BUILD_PARAVIEW_PLUGINS "Build the ParaView plugins. Requires a ParaView build tree." OFF )
252 if( FF_BUILD_PARAVIEW_PLUGINS )
253   # find ParaView, which also find the VTK which has been used to build ParaView
254   find_package( ParaView REQUIRED )
255   if( NOT ParaView_FOUND )
256     message( FATAL_ERROR "Failed to find the ParaView build tree. Specify ParaView_DIR or disable FF_BUILD_PARAVIEW_PLUGINS" )
257   endif( NOT ParaView_FOUND )
258   # find the installed ParaView executable
259   find_program(
260     FF_PARAVIEW3_APP NAMES paraview paraview.app
261     PATHS ${ParaView_DIR}/bin
262     DOC "Path to the ParaView 3 executable (or application bundle on Mac OS X)"
263     )
264   if( NOT FF_PARAVIEW3_APP )
265     message( FATAL_ERROR "Failed to find the ParaView 3 executable or application bundle" )
266   endif( NOT FF_PARAVIEW3_APP )
267 endif( FF_BUILD_PARAVIEW_PLUGINS )
268 mark_as_advanced( FF_BUILD_PARAVIEW_PLUGINS FF_PARAVIEW3_APP )
270 # figure out default Pstream library
271 if( FF_USE_MPI )
272   set( _FF_DEFAULT_PSTREAM mpi )
273 elseif( FF_USE_PVM )
274   set( _FF_DEFAULT_PSTREAM pvm )
275 elseif( FF_USE_GAMMA )
276   set( _FF_DEFAULT_PSTREAM gamma )
277 else( FF_USE_MPI )
278   set( _FF_DEFAULT_PSTREAM dummy )
279 endif( FF_USE_MPI )
280 set( FF_DEFAULT_PSTREAM ${_FF_DEFAULT_PSTREAM} CACHE STRING "Default Pstream library implementation [dummy|mpi|pvm|gamma]" )
281 mark_as_advanced( FF_DEFAULT_PSTREAM )
283 # ask user whether she wants to build Doxygen docs
284 option( FF_ENABLE_DOXYGEN_DOCS "Build the Doxygen documentation" OFF )
285 if( FF_ENABLE_DOXYGEN_DOCS )
286   find_package( Doxygen REQUIRED )
287 endif( FF_ENABLE_DOXYGEN_DOCS )
288 mark_as_advanced( FF_ENABLE_DOXYGEN_DOCS )
290 # find m4 macro processor
291 find_program( M4_EXECUTABLE m4 DOC "Path to the m4 macro processor" )
292 mark_as_advanced( M4_EXECUTABLE )
293 if( NOT M4_EXECUTABLE )
294   message( "WARNING: Failed to find M4 macro processor. Some of the tutorials will fail if it can't be found." )
295   set( M4_EXECUTABLE m4 )
296 endif( NOT M4_EXECUTABLE )
298 # on APPLE use cp -R -P -p, otherwise use cp -a
299 if( APPLE )
300   set( FF_CP_A_FLAGS "-R -P -p" )
301 else( APPLE )
302   set( FF_CP_A_FLAGS "-a" )
303 endif( APPLE )
305 # execinfo.h and cxxabi.h only work using GNU gcc and Debug config
306 # assume that if we have execinfo.h, cxxabi.h is also present.
307 if( CMAKE_COMPILER_IS_GNUCXX AND CMAKE_BUILD_TYPE STREQUAL Debug )
308   find_package( Execinfo )
309 endif( CMAKE_COMPILER_IS_GNUCXX AND CMAKE_BUILD_TYPE STREQUAL Debug )
311 # create the FreeFOAMConfig.h file
312 configure_file( ${CMAKE_SOURCE_DIR}/FreeFOAMConfig.h.in
313   ${CMAKE_BINARY_DIR}/include/FreeFOAMConfig.h @ONLY )
315 # on Solaris/SunOS fix up the shebangs
316 if( CMAKE_SYSTEM_NAME STREQUAL SunOS AND NOT EXISTS ${CMAKE_BINARY_DIR}/replaceAllShellSun.run )
317   message( STATUS "Fixing shell-interpreter for SunOS and Solaris" )
318   execute_process(
319     COMMAND ${CMAKE_SOURCE_DIR}/data/utilities/replaceAllShellSun bin
320     COMMAND ${CMAKE_SOURCE_DIR}/data/utilities/replaceAllShellSun data
321     COMMAND ${CMAKE_SOURCE_DIR}/data/utilities/replaceAllShellSun tutorials
322     COMMAND ${CMAKE_SOURCE_DIR}/data/utilities/replaceAllShellSun doc
323     COMMAND ${CMAKE_COMMAND} -E touch${CMAKE_BINARY_DIR}/replaceAllShellSun.run
324     WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
325     )
326 endif( CMAKE_SYSTEM_NAME STREQUAL SunOS AND NOT EXISTS ${CMAKE_BINARY_DIR}/replaceAllShellSun.run )
328 # set up defines
329 add_definitions(
330   -D${FF_PRECISION}
331   -DNoRepository
332   -D${FF_OS}
333   )
335 # tools for building the include tree
336 include( createIncludeWrappers )
337 include_directories( ${CMAKE_BINARY_DIR}/include )
339 # descend into the sources...
340 add_subdirectory( bin )
341 add_subdirectory( etc )
342 add_subdirectory( data )
343 add_subdirectory( src )
344 add_subdirectory( applications )
345 add_subdirectory( doc )
346 add_subdirectory( tutorials )
348 # export the library dependencies to the build tree
349 ff_export_targets_to_build_tree()
351 # export build settings and library dependencies
352 include( CMakeExportBuildSettings )
353 cmake_export_build_settings( ${FF_LIBRARY_OUTPUT_DIRECTORY}/FreeFOAMBuildSettings.cmake )
355 # create FreeFOAMConfig.cmake for the build tree
356 set( CONFIG_DEFINITIONS -DNoRepository -D${FF_OS} -D${FF_PRECISION} )
357 if( APPLE )
358   list( APPEND CONFIG_DEFINITIONS -Ddarwin )
359 endif( APPLE )
360 set( CONFIG_HEADER_PATH ${CMAKE_BINARY_DIR}/include )
361 set( CONFIG_LIBRARY_PATH ${FF_LIBRARY_OUTPUT_DIRECTORY} )
362 if( APPLE AND FF_BUILD_FRAMEWORK )
363   set( CONFIG_FRAMEWORK_PATH "${FF_FRAMEWORK_OUTPUT_DIRECTORY}" )
364 endif( APPLE AND FF_BUILD_FRAMEWORK )
365 set( CONFIG_USE_FILE_PATH ${CMAKE_SOURCE_DIR} )
366 configure_file(
367   ${CMAKE_SOURCE_DIR}/FreeFOAMConfig.cmake.in
368   ${CMAKE_BINARY_DIR}/FreeFOAMConfig.cmake
369   @ONLY
370   )
372 # create FreeFOAMConfig.cmake for the install tree
373 set( CONFIG_HEADER_PATH "${FF_INSTALL_HEADER_PATH}" )
374 set( CONFIG_LIBRARY_PATH "${FF_INSTALL_LIB_PATH}" )
375 if( APPLE AND FF_BUILD_FRAMEWORK )
376   set( CONFIG_FRAMEWORK_PATH "${FF_INSTALL_FRAMEWORK_PATH}" )
377 endif( APPLE AND FF_BUILD_FRAMEWORK )
378 set( CONFIG_USE_FILE_PATH "${FF_INSTALL_LIB_PATH}" )
379 configure_file(
380   ${CMAKE_SOURCE_DIR}/FreeFOAMConfig.cmake.in
381   ${CMAKE_BINARY_DIR}/InstallFiles/FreeFOAMConfig.cmake
382   @ONLY
383   )
385 # install the CMake config files
386 install( FILES
387   FreeFOAMUse.cmake
388   ${CMAKE_BINARY_DIR}/InstallFiles/FreeFOAMConfig.cmake
389   ${FF_LIBRARY_OUTPUT_DIRECTORY}/FreeFOAMBuildSettings.cmake
390   DESTINATION ${FF_INSTALL_CMAKE_PATH}
391   COMPONENT dev
392   )
394 # install the FreeFOAMLibraryDepends.cmake file
395 install( EXPORT FreeFOAMLibraryDepends
396   DESTINATION ${FF_INSTALL_CMAKE_PATH}
397   NAMESPACE FF_
398   COMPONENT dev
399   )
401 # pack things up
402 include( FreeFOAMCPack )
404 # uninstall target
405 configure_file(
406   "${CMAKE_SOURCE_DIR}/CMake/Modules/cmake_uninstall.cmake.in"
407   "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake"
408   @ONLY
409   )
411 add_custom_target( uninstall
412   "${CMAKE_COMMAND}" -P "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake"
413   )
415 # ------------------------- vim: set sw=2 sts=2 et: --------------- end-of-file