1 #------------------------------------------------------------------------------
3 # \\ / F ield | foam-extend: Open Source CFD
4 # \\ / O peration | Version: 4.0
5 # \\ / A nd | Web: http://www.foam-extend.org
6 # \\/ M anipulation | For copyright notice see file Copyright
7 #------------------------------------------------------------------------------
9 # This file is part of foam-extend.
11 # foam-extend is free software: you can redistribute it and/or modify it
12 # under the terms of the GNU General Public License as published by the
13 # Free Software Foundation, either version 3 of the License, or (at your
14 # option) any later version.
16 # foam-extend is distributed in the hope that it will be useful, but
17 # WITHOUT ANY WARRANTY; without even the implied warranty of
18 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 # General Public License for more details.
21 # You should have received a copy of the GNU General Public License
22 # along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
28 # Generic Makefile used by wmake
30 #------------------------------------------------------------------------------
32 #------------------------------------------------------------------------------
33 # The Makefile use 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_DIR
= $(WM_PROJECT_DIR
)/lib
60 LIB_WM_OPTIONS_DIR
= $(LIB_DIR
)/$(WM_OPTIONS
)
61 OBJECTS_DIR
= $(MAKE_DIR
)/$(WM_OPTIONS
)
62 CLASSES_DIR
= $(MAKE_DIR
)/classes
67 ifeq ($(WM_ARCH_BASE
),mingw
)
68 PROJECT_INC
= -I
$(FOAM_SRC
) -I
$(FOAM_APP
) -I
$(LIB_SRC
)/$(WM_PROJECT
)/lnInclude
-I
$(LIB_SRC
)/OSspecific
/$(WM_OSTYPE
)/lnInclude
70 PROJECT_INC
= -I
$(LIB_SRC
)/$(WM_PROJECT
)/lnInclude
-I
$(LIB_SRC
)/OSspecific
/$(WM_OSTYPE
)/lnInclude
72 PROJECT_LIBS
= -l
$(WM_PROJECT
)
73 PROJECT_VERSION
= $(shell printf
-- "-DPROJECT_VERSION=%d%03d%03d" $$(echo
$(WM_PROJECT_VERSION
) | sed
-e
's/\./ /g'))
81 #------------------------------------------------------------------------------
82 # declare all .o files depend on $(OBJECTS_DIR)/options
83 #------------------------------------------------------------------------------
85 EXE_DEP
= $(OBJECTS_DIR
)/options
88 #------------------------------------------------------------------------------
89 # declare default name of libraries and executables
90 #------------------------------------------------------------------------------
95 # Shared library extension
96 ifeq ($(WM_ARCH_BASE
),darwin
)
99 else ifeq ($(WM_ARCH_BASE
),mingw
)
100 # Using MinGW-w64 compiler on Windows
107 EXE
= $(WM_PROJECT
).out
109 # Standalone executable
113 #------------------------------------------------------------------------------
114 # set compilation and dependency building rules
115 #------------------------------------------------------------------------------
117 GENERAL_RULES
= $(WM_DIR
)/rules
/General
118 RULES
= $(WM_DIR
)/rules
/$(WM_ARCH
)$(WM_COMPILER
)
119 BIN
= $(WM_DIR
)/bin
/$(WM_ARCH
)$(WM_COMPILER
)
121 include $(GENERAL_RULES
)/general
122 include $(RULES
)/general
123 include $(RULES
)/$(WM_LINK_LANGUAGE
)
125 MAKE_DEP
= @
$(MKDEP
) $< |
$(WM_SCRIPTS
)/addCompile
$<
128 #------------------------------------------------------------------------------
129 # Include PROJECT directory tree file and
130 # source, object and dependency list files.
131 # These are constructed by wmakeDerivedFiles
132 #------------------------------------------------------------------------------
134 include $(OBJECTS_DIR
)/options
135 include $(OBJECTS_DIR
)/filesMacros
136 include $(OBJECTS_DIR
)/sourceFiles
137 include $(OBJECTS_DIR
)/objectFiles
138 include $(OBJECTS_DIR
)/localObjectFiles
139 include $(OBJECTS_DIR
)/dependencyFiles
141 #------------------------------------------------------------------------------
142 # set header file include paths
143 #------------------------------------------------------------------------------
154 #------------------------------------------------------------------------------
155 # define link statements for executables
156 #------------------------------------------------------------------------------
159 @
$(WM_SCRIPTS
)/mkObjectDir
$(EXE
)
160 $(LINKEXE
) $(OBJECTS
) -L
$(LIB_WM_OPTIONS_DIR
) \
161 $(EXE_LIBS
) $(PROJECT_LIBS
) $(SYS_LIBS
) $(LINK_LIBS
) $(GLIBS
) -o
$(EXE
)
164 @echo
\'$(SEXE
)\' is up to date.
167 @
$(WM_SCRIPTS
)/mkObjectDir
$(SEXE
)
168 $(LINKEXE
) $(OBJECTS
) $(EXE_LIBS
) \
169 $(SYS_LIBS
) $(LINK_LIBS
) $(GLIBS
) -o
$(SEXE
)
172 #------------------------------------------------------------------------------
173 # define link statements for libraries
174 #------------------------------------------------------------------------------
176 ifneq (,$(findstring libfoam
,$(LIB
)))
183 @echo
\'$(LIB
).
$(SO
)\' is up to date.
185 $(LIB
).
$(SO
): $(OBJECTS
)
186 @
$(WM_SCRIPTS
)/mkObjectDir
$(LIB
)
188 ifeq ($(WM_ARCH_BASE
),darwin
)
189 @cd
$(OBJECTS_DIR
) ; \
190 $(LINKLIBSO
) $(LOCAL_OBJECTS
) -L
$(LIB_WM_OPTIONS_DIR
) $(LIB_LIBS
) $(GLIB_LIBS
) -install_name
$(LIB
).
$(SO
) -o
$(LIB
).
$(SO
)
191 else ifeq ($(WM_ARCH_BASE
),mingw
)
192 @cd
$(OBJECTS_DIR
) ; \
193 $(LINKLIBSO
) $(LOCAL_OBJECTS
) -L
$(LIB_WM_OPTIONS_DIR
) $(LIB_LIBS
) $(GLIB_LIBS
) $(EXTRA_LIBS
) -o
$(LIB
).
$(SO
) -Wl
,--out-implib
,$(LIB
).a
195 @cd
$(OBJECTS_DIR
) ; \
196 $(LINKLIBSO
) $(LOCAL_OBJECTS
) -L
$(LIB_WM_OPTIONS_DIR
) $(LIB_LIBS
) $(GLIB_LIBS
) -o
$(LIB
).
$(SO
)
200 @echo
\'$(LIB
).a
\' is up to date.
203 @
$(WM_SCRIPTS
)/mkObjectDir
$(LIB
)
205 $(AR
) $(ARFLAGS
) $(LIB
).a
$(OBJECTS
)
209 @echo
\'$(LIB
).o
\' is up to date.
212 @
$(WM_SCRIPTS
)/mkObjectDir
$(LIB
)
214 $(LD
) -r
-o
$(LIB
).o
$(OBJECTS
)
217 @echo
\'$(LIB
).jar
\' is up to date.
219 $(LIB
).jar
: $(OBJECTS
)
220 @
$(WM_SCRIPTS
)/mkObjectDir
$(LIB
)
221 jar cfm
$(LIB
).jar
$(LIB_LIBS
) -C
$(CLASSES_DIR
) .
223 #------------------------------------------------------------------------------
224 # Set rule to create the include directory for libraries
225 #------------------------------------------------------------------------------
227 lnInclude
/uptodate
: $(MAKE_DIR
)/files
$(MAKE_DIR
)/options
228 @
rm -rf lnInclude
; wmakeLnInclude .
; touch lnInclude
/uptodate
231 #------------------------------------------------------------------------------
232 # Set depedency rule and include dependency lists
233 #------------------------------------------------------------------------------
235 $(OBJECTS_DIR
)/dependencies
: $(DEPENDENCIES
)
236 @echo dependencies up to date
> $(OBJECTS_DIR
)/dependencies
238 include $(INCLUDE_DEPS
)
241 #------------------------------------------------------------------------------