File: general

package info (click to toggle)
openfoam 1912.200626-3
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 238,956 kB
  • sloc: cpp: 1,159,641; sh: 15,902; ansic: 5,195; lex: 660; xml: 387; python: 282; awk: 212; makefile: 103; sed: 88; csh: 3
file content (239 lines) | stat: -rw-r--r-- 7,263 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
#----------------------------*- makefile-gmake -*------------------------------
# =========                 |
# \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
#  \\    /   O peration     |
#   \\  /    A nd           | www.openfoam.com
#    \\/     M anipulation  |
#------------------------------------------------------------------------------
#     Copyright (C) 2011-2016 OpenFOAM Foundation
#     Copyright (C) 2019-2020 OpenCFD Ltd.
#------------------------------------------------------------------------------
# License
#     This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
#
# File
#     wmake/makefiles/general
#
# Description
#     Makefile used by wmake to make dependency files and libs and applications
#
#------------------------------------------------------------------------------

#------------------------------------------------------------------------------
# Use POSIX shell. Default to POSIX for the OS.
#------------------------------------------------------------------------------

SHELL           = /bin/sh

ifeq ("$(WM_OSTYPE)","")
    WM_OSTYPE   = POSIX
endif


#------------------------------------------------------------------------------
# No default suffix rules used
#------------------------------------------------------------------------------

.SUFFIXES:


#------------------------------------------------------------------------------
# Directory containing the wmake scripts
#------------------------------------------------------------------------------

WM_SCRIPTS      = $(WM_DIR)/scripts


#------------------------------------------------------------------------------
# Declare default paths
#------------------------------------------------------------------------------

LIB_SRC         = $(WM_PROJECT_DIR)/src
LIB_PLATFORMS   = $(WM_PROJECT_DIR)/platforms/$(WM_OPTIONS)/lib
OBJECTS_DIR     = $(MAKE_DIR)/$(WM_OPTIONS)

SYS_INC         =
SYS_LIBS        =

PROJECT_INC     = \
    -I$(LIB_SRC)/$(WM_PROJECT)/lnInclude \
    -I$(LIB_SRC)/OSspecific/$(WM_OSTYPE)/lnInclude

PROJECT_LIBS    = -l$(WM_PROJECT)

EXE_INC         =
EXE_LIBS        =
LIB_LIBS        =


# These variables are used for some builds - provide fallback values
ifeq (,$(FOAM_SOLVERS))
    FOAM_SOLVERS    = $(WM_PROJECT_DIR)/applications/solvers
endif
ifeq (,$(FOAM_UTILITIES))
    FOAM_UTILITIES  = $(WM_PROJECT_DIR)/applications/utilities
endif

#------------------------------------------------------------------------------
# Declare default name of libraries and executables
#------------------------------------------------------------------------------

# Shared library extension (with '.' separator)
EXT_SO  = .so

# Executable extension (with '.' separator)
EXT_EXE =

# Library (default which is to be overridden)
LIB     = libNULL

# Project executable (default which is to be overridden)
EXE     = $(WM_PROJECT).out

# Standalone executable (default which is to be overridden)
SEXE    = a.out

#DEBUG $(info "EXE_SO  = ${EXE_SO}")
#DEBUG $(info "EXT_EXE = ${EXT_EXE}")


#------------------------------------------------------------------------------
# Set compilation and dependency building rules
#------------------------------------------------------------------------------

GENERAL_RULES = $(WM_DIR)/rules/General
include $(GENERAL_RULES)/general


#------------------------------------------------------------------------------
# Include PROJECT directory tree file and
# source, object and dependency list files.
# These are constructed by makefiles/files
#------------------------------------------------------------------------------

include $(OBJECTS_DIR)/options
include $(OBJECTS_DIR)/variables
include $(OBJECTS_DIR)/sourceFiles
DEPENDENCIES=$(SOURCE:%=$(OBJECTS_DIR)/%.dep)
BASENAMES=$(basename $(SOURCE))
OBJECTS=$(BASENAMES:%=$(OBJECTS_DIR)/%.o)


#------------------------------------------------------------------------------
# Set header file include paths
#------------------------------------------------------------------------------

LIB_HEADER_DIRS = \
    $(EXE_INC) \
    -IlnInclude \
    -I. \
    $(PROJECT_INC) \
    $(GINC) \
    $(SYS_INC)


#------------------------------------------------------------------------------
# Define link statements for executables
#------------------------------------------------------------------------------

.PHONY: all
all: $(EXE)$(EXT_EXE)
	@:

.PHONY: silent
silent:
	@:

$(EXE)$(EXT_EXE): $(OBJECTS)
	@$(WM_SCRIPTS)/makeTargetDir $(EXE)
	$(call QUIET_MESSAGE,ld,$(EXE)$(EXT_EXE))
	$E $(LINKEXE) $(OBJECTS) -L$(LIB_PLATFORMS) \
	    $(EXE_LIBS) $(PROJECT_LIBS) $(SYS_LIBS) \
	    $(LINK_LIBS) $(GLIBS) -o $(EXE)$(EXT_EXE)

.PHONY: exe
exe: $(SEXE)$(EXT_EXE) | silent

$(SEXE)$(EXT_EXE): $(OBJECTS)
	@$(WM_SCRIPTS)/makeTargetDir $(SEXE)
	$(call QUIET_MESSAGE,ld,$(SEXE)$(EXT_EXE))
	$E $(LINKEXE) $(OBJECTS) $(EXE_LIBS) \
	    $(SYS_LIBS) $(LINK_LIBS) $(GLIBS) -o $(SEXE)$(EXT_EXE)


#------------------------------------------------------------------------------
# Define link statements for libraries
#------------------------------------------------------------------------------

.PHONY: objects
objects: $(OBJECTS) | silent

.PHONY: libso
libso: $(LIB)$(EXT_SO) | silent

ifeq ("$(WM_OSTYPE)","MSwindows")
$(LIB)$(EXT_SO): $(OBJECTS)
	@$(WM_SCRIPTS)/makeTargetDir $(LIB)
	$(call QUIET_MESSAGE,ld,$(LIB)$(EXT_SO))
	$E $(LINKLIBSO) $(OBJECTS) -L$(LIB_PLATFORMS) \
	    $(PROJECT_LIBS) $(LIB_LIBS) $(GLIB_LIBS) -o $(LIB)$(EXT_SO)
else
$(LIB)$(EXT_SO): $(OBJECTS)
	@$(WM_SCRIPTS)/makeTargetDir $(LIB)
	$(call QUIET_MESSAGE,ld,$(LIB)$(EXT_SO))
	$E $(LINKLIBSO) $(OBJECTS) -L$(LIB_PLATFORMS) \
	    $(LIB_LIBS) $(GLIB_LIBS) -o $(LIB)$(EXT_SO)
endif

.PHONY: lib
lib: $(LIB).a | silent

$(LIB).a: $(OBJECTS)
	@$(WM_SCRIPTS)/makeTargetDir $(LIB)
	@rm -f $(LIB).a
	$(call QUIET_MESSAGE,ar,$(LIB).a)
	$E $(AR) $(ARFLAGS) $(LIB).a $(OBJECTS)
	$(call QUIET_MESSAGE,ranlib,$(notdir $(LIB)))
	$E $(RANLIB) $(LIB).a

.PHONY: libo
libo: $(LIB).o | silent

$(LIB).o: $(OBJECTS)
	@$(WM_SCRIPTS)/makeTargetDir $(LIB)
	@rm -f $(LIB).o
	$(call QUIET_MESSAGE,ld,$(LIB).o)
	$E $(LD) -r -o $(LIB).o $(OBJECTS)


#------------------------------------------------------------------------------
# Set rule to create the include directory for libraries
#------------------------------------------------------------------------------

lnInclude: $(MAKE_DIR)/files $(MAKE_DIR)/options
	@rm -rf lnInclude ; wmakeLnInclude .


#------------------------------------------------------------------------------
# Declare all object files depend on $(OBJECTS_DIR)/options
#------------------------------------------------------------------------------

$(OBJECTS): $(OBJECTS_DIR)/options
$(foreach S,$(SOURCE),$(eval $(OBJECTS_DIR)/$(basename $S).o : $(OBJECTS_DIR)/$S.dep))


#------------------------------------------------------------------------------
# Set dependency rule and include dependency lists
#------------------------------------------------------------------------------

.PHONY: dep updatedep
dep: $(DEPENDENCIES)

updatedep: dep

ifeq ($(findstring lnInclude,$(MAKECMDGOALS))$(findstring updatedep,$(MAKECMDGOALS)),)
sinclude $(DEPENDENCIES)
endif


#----------------------------- vim: set ft=make: ------------------------------