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 #-------------------------------------------------------------------------------
32 # - Configure utility files for build and install tree
34 # FF_CONFIGURE_FILES( buildFilesVar installFilesVar destDir
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
59 # - build tree: ${CMAKE_BINARY_DIR}/data
60 # - install tree: ${FF_INSTALL_DATA_PATH}
62 # - build tree: ${CMAKE_BINARY_DIR}/doc
63 # - install tree: ${FF_INSTALL_DOC_PATH}
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
68 # - build tree: ${CMAKE_BINARY_DIR}/bin
69 # - install tree: ${FF_INSTALL_BIN_PATH}
71 # - build tree: ${CMAKE_BINARY_DIR}/lib/FreeFOAM-${FF_VERSION_FULL}
72 # - install tree: ${FF_INSTALL_LIB_PATH}
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}
80 # - build tree: ${CMAKE_BINARY_DIR}/include
81 # - install tree: ${FF_INSTALL_HEADER_PATH}
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}
90 # - install tree: TRUE
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 )
101 set( _next_is_prefix FALSE )
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" )
109 foreach( _s ${ARGN} )
110 if( _s STREQUAL FILEPREFIX )
111 set( _next_is_prefix TRUE )
112 elseif( _next_is_prefix )
114 set( _next_is_prefix FALSE )
115 elseif( _s STREQUAL COPYONLY )
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} )
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} )
162 endif( _mode STREQUAL @ONLY )
163 list( APPEND ${_installFilesVar} ${_d} )
164 endif( _s STREQUAL FILEPREFIX )
166 endmacro( FF_CONFIGURE_FILES )
168 # ------------------------- vim: set sw=2 sts=2 et: --------------- end-of-file