(file) Return to Rules.mk CVS log (file) (dir) Up to [Development] / JSOC

 1 arta  1.1 # Note: this design uses target-specific flags, because it's the only
 2           # way to get the value of a variable that's different for each
 3           # subdirectory, $(d), into the build recipes. Once you go that way,
 4           # you can as well use the feature to specify (extra) objects and 
 5           # libraries to be linked or archived.
 6           
 7           
 8           # Standard stuff
 9           
10           .SUFFIXES:
11           .SUFFIXES:	.c .o 
12           
13           all:		targets
14           
15           # Subdirectories, in random order
16           
17 arta  1.2 dir	:= base
18           -include		$(SRCDIR)/$(dir)/Rules.mk
19           dir	:= proj
20 arta  1.5 -include		$(SRCDIR)/$(LOCALIZATIONDIR)/Rules.mk
21 arta  1.1 
22           # Non-default targets
23           idl:		$(LIBJSOC_MAIN_SOCK_I)
24           dsds:		$(LIBSOIJSOC) $(LIBDSDS)
25           examples:	$(EXAMPLES)
26           sums:		$(SUMS_BIN)
27           universe:	targets idl dsds examples sums $(LIBDSPUTIL)
28           
29           # General directory-independent flags (MUST BE DEFINED BEFORE THE SECTION
30           # "General directory-independent rules"
31           $(FPICOBJ):	CF_TGT := $(CF_TGT) -fPIC
32           
33           $(FIOBJ):	CF_TGT := $(CF_TGT) -DFLIB
34           
35           $(IIOBJ):	CF_TGT := $(CF_TGT) -DIDLLIB
36           
37           # General directory-independent rules
38           %.c:		%.pgc
39           		$(ECPG)
40 karen 1.3 %.c:		%.i
41           		$(SWIG)
42 arta  1.1 
43           %.o:		%.f
44           		$(FCOMP)
45           
46 arta  1.4 %.o:		%.f90
47           		$(FCOMP)
48           
49 arta  1.1 # If a .f file is to be compiled more than one, the Rules.mk file that
50           # contains the rules for that .f file exists in a subdirectory of the 
51           # directory that contains the .f file.  As a result, the stem of the 
52           # of the corresponding .o file is the child of the stem of the .f file.
53           %.o:		../%.f
54           		$(FCOMP)
55           
56 arta  1.4 %.o:		../%.f90
57           		$(FCOMP)
58           
59 arta  1.1 %.o:		%.c
60           		$(COMP)
61           
62           # If a .c file is to be compiled more than one, the Rules.mk file that
63           # contains the rules for that .c file exists in a subdirectory of the 
64           # directory that contains the .c file.  As a result, the stem of the 
65           # of the corresponding .o file is the child of the stem of the .c file.
66           %.o:		../%.c
67           		$(COMP)
68           
69           %:		%.o
70           		$(LINK)
71           
72           %:		%.c
73           		$(COMPLINK)
74           
75           
76           # These two targets collect real targets, i.e. ones that can be built.
77           
78           .PHONY:		targets
79           targets:	$(TGT_BIN) $(TGT_LIB)
80 arta  1.1 
81           # These targets merely contain commands to be executed, i.e. they collect
82           # only .PHONY targets, even if they're not explicitly marked as such. 
83           # The install target does not collect dependencies (other than for forcing
84           # things to be built) because it's always considered 'out of date' anway as
85           # it's a .PHONY target. Instead, it collects installation commands that will be
86           # ran in addition to the standard ones to install the known targets.
87           
88           .PHONY:		clean
89           clean:
90           		rm -f $(CLEAN)
91           
92           # Prevent make from removing any build targets, including intermediate ones
93           
94           .SECONDARY:	$(CLEAN)
95           

Karen Tian
Powered by
ViewCVS 0.9.4