FIX: paraFoam to search plugins in correct path
[freefoam.git] / CMake / Modules / FFConfigureFiles.cmake
blob13855a4582d0dad4e7e455e8b7c5e9a441b1f20b
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 # - Configure utility files for build and install tree
34 #  FF_CONFIGURE_FILES( buildFilesVar installFilesVar destDir
35 #                      [FILEPREFIX prefix]
36 #                      [filename ...]
37 #                      [COPYONLY filename ...] )
39 # Configures all files passed into
40 # - ${CMAKE_BINARY_DIR}/${destDir}/ using build tree settings
41 # - ${CMAKE_BINARY_DIR}/InstallFiles/${destDir}/ using install tree settings
42 # using CONFIGURE_FILE with @ONLY. If a .in suffix is present, it will be removed.
44 # The prefix given after FILEPREFIX is prepended to all file names if present.
45 # This argument can be repeated as often as required in the argument list.
46 # Scripts after the COPYONLY are not configured and will only be copied into
47 # ${CMAKE_BINARY_DIR}/${destDir}/ (to save space and speed things up).
49 # The variables ${buildFilesVar} and ${installFilesVar} will contain the names
50 # of the files for the build-tree and the install-tree, respectively. These
51 # variables can be used for the INSTALL( FILES ... ) command.
53 # COPYONLY files will appear in both lists with the same path
54 # (${CMAKE_BINARY_DIR}/${destDir}/) and are not configured.
56 # Variables which are adjusted to the different trees and can be use in files to
57 # be configured:
58 # - FF_DATA_DIR:
59 #   - build tree: ${CMAKE_BINARY_DIR}/data
60 #   - install tree: ${FF_INSTALL_DATA_PATH}
61 # - FF_LOCAL_DOC_DIR:
62 #   - build tree: ${CMAKE_BINARY_DIR}/doc
63 #   - install tree: ${FF_INSTALL_DOC_PATH}
64 # - FF_DOC_DIR:
65 #   If FF_USE_LOCAL_DOXYGEN_DOCS is TRUE this equals to FF_LOCAL_DOC_DIR,
66 #   else it is set to http://freefoam.sf.net/doc
67 # - FF_BIN_DIR:
68 #   - build tree: ${CMAKE_BINARY_DIR}/bin
69 #   - install tree: ${FF_INSTALL_BIN_PATH}
70 # - FF_LIB_DIR:
71 #   - build tree: ${CMAKE_BINARY_DIR}/lib/FreeFOAM-${FF_VERSION_FULL}
72 #   - install tree: ${FF_INSTALL_LIB_PATH}
73 # - FF_FRAMEWORK_DIR:
74 #   - build tree: ${CMAKE_BINARY_DIR}/Library/Frameworks
75 #   - install tree: ${FF_INSTALL_FRAMEWORK_PATH}
76 # - FF_PV3FOAMREADER_DIR:
77 #    - build tree: ${FF_LIB_DIR}/plugins/PV3FoamReader
78 #    - install tree: ${FF_INSTALL_PV3FOAMREADER_PATH}
79 # - FF_INCLUDE_DIR:
80 #   - build tree: ${CMAKE_BINARY_DIR}/include
81 #   - install tree: ${FF_INSTALL_HEADER_PATH}
82 # - FF_CONFIG_DIR:
83 #   - build tree: ${CMAKE_BINARY_DIR}/etc
84 #   - install tree: ${FF_INSTALL_CONFIG_PATH}
85 # - FF_CMAKECONFIG_DIR:
86 #   - build tree: ${CMAKE_BINARY_DIR}
87 #   - install tree: ${FF_INSTALL_CMAKE_PATH}
88 # - FF_IS_INSTALLED:
89 #   - build tree: FALSE
90 #   - install tree: TRUE
91 # - FF_FIX_INCLUDES:
92 #   - build tree: ${FF_DATA_DIR}/utilities/doxyFixIncludes $1 |
93 #   - install tree: cat $1 |
94 # - FF_FIX_HEADER_NAME:
95 #   - build tree: | ${FF_DATA_DIR}/utilities/doxyFixHeaderName $1
96 #   - install tree: <empty>
98 macro( FF_CONFIGURE_FILES _buildFilesVar _installFilesVar _destDir )
99   # initialize
100   set( _mode @ONLY )
101   set( _next_is_prefix FALSE )
102   set( _prefix "" )
103   #TODO use UNSET once it is available in mainstream distros
104   set( ${_buildFilesVar} )
105   #TODO use UNSET once it is available in mainstream distros
106   set( ${_installFilesVar} )
107   set( FF_DOC_DIR "http://freefoam.sf.net/doc" )
108   # loop over files
109   foreach( _s ${ARGN} )
110     if( _s STREQUAL FILEPREFIX )
111       set( _next_is_prefix TRUE )
112     elseif( _next_is_prefix )
113       set( _prefix ${_s} )
114       set( _next_is_prefix FALSE )
115     elseif( _s STREQUAL COPYONLY )
116       set( _mode ${_s} )
117     else( _s STREQUAL FILEPREFIX )
118       # the configured name
119       get_filename_component( _cs ${_s} NAME )
120       get_filename_component( _cp ${_s} PATH )
121       string( REGEX REPLACE "\\.in$" "" _cs "${_cp}/${_prefix}${_cs}" )
122       set( _dbuild ${CMAKE_BINARY_DIR}/${_destDir}/${_cs} )
123       set( _dinst ${CMAKE_BINARY_DIR}/InstallFiles/${_destDir}/${_cs} )
124       set( _d ${_dbuild} )
125       # configure the script for build tree
126       set( FF_BIN_DIR ${CMAKE_BINARY_DIR}/bin )
127       set( FF_LIB_DIR ${FF_LIBRARY_OUTPUT_DIRECTORY} )
128       set( FF_FRAMEWORK_DIR "${FF_FRAMEWORK_OUTPUT_DIRECTORY}" )
129       set( FF_PV3FOAMREADER_DIR "${FF_BIN_DIR}/plugins/PV3FoamReader" )
130       set( FF_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include" )
131       set( FF_DATA_DIR ${CMAKE_BINARY_DIR}/data )
132       set( FF_LOCAL_DOC_DIR ${CMAKE_BINARY_DIR}/doc )
133       if( FF_USE_LOCAL_DOXYGEN_DOCS )
134         set( FF_DOC_DIR ${FF_LOCAL_DOC_DIR} )
135       endif( FF_USE_LOCAL_DOXYGEN_DOCS )
136       set( FF_CONFIG_DIR ${CMAKE_BINARY_DIR}/etc )
137       set( FF_CMAKECONFIG_DIR ${CMAKE_BINARY_DIR} )
138       set( FF_IS_INSTALLED FALSE )
139       set( FF_FIX_INCLUDES "${FF_DATA_DIR}/utilities/doxyFixIncludes $1 | " )
140       set( FF_FIX_HEADER_NAME " | ${FF_DATA_DIR}/utilities/doxyFixHeaderName $1" )
141       configure_file( ${_s} ${_dbuild} ${_mode} )
142       list( APPEND ${_buildFilesVar} ${_dbuild} )
143       if( _mode STREQUAL @ONLY )
144         # configure the script for install tree
145         set( FF_BIN_DIR ${FF_INSTALL_BIN_PATH} )
146         set( FF_LIB_DIR ${FF_INSTALL_LIB_PATH} )
147         set( FF_FRAMEWORK_DIR "${FF_INSTALL_FRAMEWORK_PATH}" )
148         set( FF_PV3FOAMREADER_DIR "${FF_INSTALL_PV3FOAMREADER_PATH}" )
149         set( FF_INCLUDE_DIR "${FF_INSTALL_HEADER_PATH}" )
150         set( FF_DATA_DIR ${FF_INSTALL_DATA_PATH} )
151         set( FF_LOCAL_DOC_DIR ${FF_INSTALL_DOC_PATH} )
152         if( FF_USE_LOCAL_DOXYGEN_DOCS )
153           set( FF_DOC_DIR ${FF_LOCAL_DOC_DIR} )
154         endif( FF_USE_LOCAL_DOXYGEN_DOCS )
155         set( FF_CONFIG_DIR ${FF_INSTALL_CONFIG_PATH} )
156         set( FF_CMAKECONFIG_DIR ${FF_INSTALL_CMAKE_PATH} )
157         set( FF_IS_INSTALLED TRUE )
158         set( FF_FIX_INCLUDES "cat $1 | " )
159         set( FF_FIX_HEADER_NAME )
160         configure_file( ${_s} ${_dinst} ${_mode} )
161         set( _d ${_dinst} )
162       endif( _mode STREQUAL @ONLY )
163       list( APPEND ${_installFilesVar} ${_d} )
164     endif( _s STREQUAL FILEPREFIX )
165   endforeach( _s )
166 endmacro( FF_CONFIGURE_FILES )
168 # ------------------------- vim: set sw=2 sts=2 et: --------------- end-of-file