1 #-------------------------------*- makefile -*---------------------------------
3 # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
5 # \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
7 #------------------------------------------------------------------------------
9 # This file is part of OpenFOAM.
11 # OpenFOAM is free software: you can redistribute it and/or modify it
12 # under the terms of the GNU General Public License as published by
13 # the Free Software Foundation, either version 3 of the License, or
14 # (at your option) any later version.
16 # OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 # You should have received a copy of the GNU General Public License
22 # along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
28 # A generic Makefile, used by wmake
30 #------------------------------------------------------------------------------
32 #------------------------------------------------------------------------------
33 # The Makefile uses a POSIX shell
34 #------------------------------------------------------------------------------
39 #------------------------------------------------------------------------------
40 # Initialise suffices list
41 #------------------------------------------------------------------------------
47 #------------------------------------------------------------------------------
48 # Set the directory containing the wmake scripts
49 #------------------------------------------------------------------------------
51 WM_SCRIPTS
= $(WM_DIR
)/scripts
54 #------------------------------------------------------------------------------
55 # declare default paths
56 #------------------------------------------------------------------------------
58 LIB_SRC
= $(WM_PROJECT_DIR
)/src
59 LIB_PLATFORMS
= $(WM_PROJECT_DIR
)/platforms
/$(WM_OPTIONS
)/lib
60 OBJECTS_DIR
= $(MAKE_DIR
)/$(WM_OPTIONS
)
61 CLASSES_DIR
= $(MAKE_DIR
)/classes
66 PROJECT_INC
= -I
$(LIB_SRC
)/$(WM_PROJECT
)/lnInclude
-I
$(LIB_SRC
)/OSspecific
/$(WM_OSTYPE
)/lnInclude
67 PROJECT_LIBS
= -l
$(WM_PROJECT
)
70 ## PROJECT_VERSION = $(shell printf -- "-DPROJECT_VERSION=%d%03d%03d" $$(echo $(WM_PROJECT_VERSION) | sed -e 's/\./ /g'))
79 #------------------------------------------------------------------------------
80 # declare all .o files depend on $(OBJECTS_DIR)/options
81 #------------------------------------------------------------------------------
83 EXE_DEP
= $(OBJECTS_DIR
)/options
86 #------------------------------------------------------------------------------
87 # declare default name of libraries and executables
88 #------------------------------------------------------------------------------
93 # Shared library extension
97 EXE
= $(WM_PROJECT
).out
99 # Standalone executable
103 #------------------------------------------------------------------------------
104 # set compilation and dependency building rules
105 #------------------------------------------------------------------------------
107 GENERAL_RULES
= $(WM_DIR
)/rules
/General
108 RULES
= $(WM_DIR
)/rules
/$(WM_ARCH
)$(WM_COMPILER
)
109 WMAKE_BIN
= $(WM_DIR
)/platforms
/$(WM_ARCH
)$(WM_COMPILER
)
111 include $(GENERAL_RULES
)/general
112 include $(RULES
)/general
113 include $(RULES
)/$(WM_LINK_LANGUAGE
)
115 MAKE_DEP
= @
$(MKDEP
) $< |
$(WM_SCRIPTS
)/addCompile
$<
118 #------------------------------------------------------------------------------
119 # Include PROJECT directory tree file and
120 # source, object and dependency list files.
121 # These are constructed by scripts/makeDerivedFiles
122 #------------------------------------------------------------------------------
124 include $(OBJECTS_DIR
)/options
125 include $(OBJECTS_DIR
)/filesMacros
126 include $(OBJECTS_DIR
)/sourceFiles
127 include $(OBJECTS_DIR
)/objectFiles
128 include $(OBJECTS_DIR
)/localObjectFiles
129 include $(OBJECTS_DIR
)/dependencyFiles
131 #------------------------------------------------------------------------------
132 # set header file include paths
133 #------------------------------------------------------------------------------
144 #------------------------------------------------------------------------------
145 # define link statements for executables
146 #------------------------------------------------------------------------------
149 @
$(WM_SCRIPTS
)/makeTargetDir
$(EXE
)
150 $(LINKEXE
) $(OBJECTS
) -L
$(LIB_PLATFORMS
) \
151 $(EXE_LIBS
) $(PROJECT_LIBS
) $(SYS_LIBS
) $(LINK_LIBS
) $(GLIBS
) -o
$(EXE
)
154 @echo
\'$(SEXE
)\' is up to date.
157 @
$(WM_SCRIPTS
)/makeTargetDir
$(SEXE
)
158 $(LINKEXE
) $(OBJECTS
) $(EXE_LIBS
) \
159 $(SYS_LIBS
) $(LINK_LIBS
) $(GLIBS
) -o
$(SEXE
)
162 #------------------------------------------------------------------------------
163 # define link statements for libraries
164 #------------------------------------------------------------------------------
169 @echo
\'$(LIB
).
$(SO
)\' is up to date.
171 $(LIB
).
$(SO
): $(OBJECTS
)
172 @
$(WM_SCRIPTS
)/makeTargetDir
$(LIB
)
174 @cd
$(OBJECTS_DIR
) ; \
175 $(LINKLIBSO
) $(LOCAL_OBJECTS
) -L
$(LIB_PLATFORMS
) $(LIB_LIBS
) $(GLIB_LIBS
) -o
$(LIB
).
$(SO
)
178 @echo
\'$(LIB
).a
\' is up to date.
181 @
$(WM_SCRIPTS
)/makeTargetDir
$(LIB
)
183 $(AR
) $(ARFLAGS
) $(LIB
).a
$(OBJECTS
)
187 @echo
\'$(LIB
).o
\' is up to date.
190 @
$(WM_SCRIPTS
)/makeTargetDir
$(LIB
)
192 $(LD
) -r
-o
$(LIB
).o
$(OBJECTS
)
195 @echo
\'$(LIB
).jar
\' is up to date.
197 $(LIB
).jar
: $(OBJECTS
)
198 @
$(WM_SCRIPTS
)/makeTargetDir
$(LIB
)
199 jar cfm
$(LIB
).jar
$(LIB_LIBS
) -C
$(CLASSES_DIR
) .
201 #------------------------------------------------------------------------------
202 # Set rule to create the include directory for libraries
203 #------------------------------------------------------------------------------
205 lnInclude
/uptodate
: $(MAKE_DIR
)/files
$(MAKE_DIR
)/options
206 @
rm -rf lnInclude
; wmakeLnInclude .
; touch lnInclude
/uptodate
209 #------------------------------------------------------------------------------
210 # Set depedency rule and include dependency lists
211 #------------------------------------------------------------------------------
213 $(OBJECTS_DIR
)/dependencies
: $(DEPENDENCIES
)
214 @echo dependencies up to date
> $(OBJECTS_DIR
)/dependencies
216 include $(INCLUDE_DEPS
)
219 #------------------------------------------------------------------------------