4 # Makerules for the sources of Fiasco
8 # Source-code locations
12 # If building in a separate srcdir, prepend it to module-provided include paths
14 VPATH := $(addprefix $(srcdir)/, $(VPATH))
15 PRIVATE_INCDIR := $(addprefix $(srcdir)/, $(PRIVATE_INCDIR))
18 # Finally add the current directory and the preprocessor directory
20 PRIVATE_INCDIR += . auto
23 # Function for all Makreuls.<subsystem> files
26 MAKERULES_SUBSYS = $(foreach subsys, $(SUBSYSTEMS), $(firstword $(wildcard $(addsuffix /Makerules.$(subsys),$(VPATH) $(srcdir)))))
29 # special: build certain sources without profiling flags
31 NOPROFILE_C = $(filter $(addsuffix .c, $(NOPROFILE)), $(SRC_C))
32 NOPROFILE_CC = $(filter $(addsuffix .cc, $(NOPROFILE)), $(SRC_CC))
33 NOOPT_C = $(filter $(addsuffix .c, $(NOOPT)), $(SRC_C))
34 NOOPT_CC = $(filter $(addsuffix .cc, $(NOOPT)), $(SRC_CC))
35 NONDEBUG_C = $(filter $(addsuffix .c, $(NONDEBUG)), $(SRC_C))
36 NONDEBUG_CC = $(filter $(addsuffix .cc, $(NONDEBUG)), $(SRC_CC))
37 INSTRUMENT_C = $(filter $(addsuffix .c, $(INSTRUMENT)), $(SRC_C))
38 INSTRUMENT_CC = $(filter $(addsuffix .cc, $(INSTRUMENT)), $(SRC_CC))
40 $(NOPROFILE_CC:.cc=.o) : %.o: %.cc
42 $(VERBOSE)$(CXX) -c -MD -MP -MF .$*.cc.d.new -o $@ \
43 $(CPPFLAGS) $(CXXFLAGS) $(OPT_CXXFLAGS) $<
44 @mv .$*.cc.d.new .$*.cc.d
46 $(NOPROFILE_C:.c=.o) : %.o: %.c
48 $(VERBOSE)$(CC) -c -MD -MP -MF .$*.c.d.new -o $@ \
49 $(CPPFLAGS) $(CFLAGS) $(OPT_CFLAGS) $<
50 @mv .$*.c.d.new .$*.c.d
52 $(NOOPT_CC:.cc=.o) : %.o: %.cc
54 $(VERBOSE)$(CXX) -c -MD -MP -MF .$*.cc.d.new -o $@ \
55 $(CPPFLAGS) $(CXXFLAGS) $(NOOPT_CXXFLAGS) $<
56 @mv .$*.cc.d.new .$*.cc.d
58 $(NOOPT_CC:.cc=.S) : %.S: %.cc
60 $(VERBOSE)$(CXX) -S -o $@ \
61 $(CPPFLAGS) $(CXXFLAGS) $(NOOPT_CXXFLAGS) $<
63 $(NOOPT_C:.c=.o) : %.o: %.c
65 $(VERBOSE)$(CC) -c -MD -MP -MF .$*.c.d.new -o $@ \
66 $(CPPFLAGS) $(CFLAGS) $(NOOPT_CFLAGS) $<
67 @mv .$*.c.d.new .$*.c.d
69 $(NOOPT_C:.c=.S) : %.S: %.c
71 $(VERBOSE)$(CC) -S -o $@ \
72 $(CPPFLAGS) $(CFLAGS) $(NOOPT_CFLAGS) $<
74 $(INSTRUMENT_CC:.cc=.o) : %.o: %.cc
76 $(VERBOSE)$(CXX) -c -MD -MP -MF .$*.cc.d.new -o $@ \
77 $(CPPFLAGS) $(CXXFLAGS) $(PROF_FLAGS) $(OPT_CXXFLAGS) $(INST_FLAGS) $<
78 @mv .$*.cc.d.new .$*.cc.d
80 $(INSTRUMENT_C:.c=.o) : %.o: %.c
82 $(VERBOSE)$(CC) -c -MD -MP -MF .$*.c.d.new -o $@ \
83 $(CPPFLAGS) $(CFLAGS) $(PROF_FLAGS) $(OPT_CFLAGS) $(INST_FLAGS) $<
84 @mv .$*.c.d.new .$*.c.d
86 $(NONDEBUG_CC:.cc=.o) : %.o: %.cc
88 $(VERBOSE)$(CXX) -c -MD -MP -MF .$*.cc.d.new -o $@ $(filter-out -DNDEBUG, \
89 $(CPPFLAGS) $(CXXFLAGS) $(PROF_FLAGS) $(OPT_CXXFLAGS)) $<
90 @mv .$*.cc.d.new .$*.cc.d
92 $(NONDEBUG_CC:.cc=.S) : %.S: %.cc
94 $(VERBOSE)$(CXX) -S -o $@ $(filter-out -DNDEBUG, \
95 $(CPPFLAGS) $(CXXFLAGS) $(PROF_FLAGS) $(OPT_CXXFLAGS)) $<
97 $(NONDEBUG_C:.c=.o) : %.o: %.c
99 $(VERBOSE)$(CC) -c -MD -MP -MF .$*.c.d.new -o $@ $(filter-out -DNDEBUG, \
100 $(CPPFLAGS) $(CFLAGS) $(PROF_FLAGS) $(OPT_CFLAGS)) $<
101 @mv .$*.c.d.new .$*.c.d
103 $(NONDEBUG_C:.c=.S) : %.S: %.c
105 $(VERBOSE)$(CC) -S -o $@ $(filter-out -DNDEBUG, \
106 $(CPPFLAGS) $(CFLAGS) $(PROF_FLAGS) $(OPT_CFLAGS)) $<
118 $(VERBOSE)$(CXX) -c -MD -MP -MF .$*.cc.d.new -o $@ \
119 $(CPPFLAGS) $(CXXFLAGS) $(PROF_FLAGS) $(OPT_CXXFLAGS) $<
120 @mv .$*.cc.d.new .$*.cc.d
124 $(VERBOSE)$(CC) -S -o $@ -fverbose-asm \
125 $(CPPFLAGS) $(CXXFLAGS) $(PROF_FLAGS) $(OPT_CXXFLAGS) $<
129 $(VERBOSE)$(CC) -c -MD -MP -MF .$*.c.d.new -o $@ \
130 $(CPPFLAGS) $(CFLAGS) $(PROF_FLAGS) $(OPT_CFLAGS) $<
131 @mv .$*.c.d.new .$*.c.d
135 $(VERBOSE)$(CC) -S -o $@ -fverbose-asm \
136 $(CPPFLAGS) $(CFLAGS) $(PROF_FLAGS) $(OPT_CFLAGS) $<
140 $(VERBOSE)$(CC) -c -MD -MP -MF .$*.S.d.new -o $@ \
141 $(CPPFLAGS) $(ASFLAGS) $<
142 @mv .$*.S.d.new .$*.S.d
146 $(VERBOSE)$(CC) -E -dD -o $@ \
147 $(CPPFLAGS) $(CFLAGS) $(PROF_FLAGS) $(OPT_CFLAGS) $<
151 $(VERBOSE)$(CXX) -E -dD -o $@ \
152 $(CPPFLAGS) $(CXXFLAGS) $(PROF_FLAGS) $(OPT_CXXFLAGS) $<
156 $(VERBOSE)$(CC) -E -dD -o $@ $(CPPFLAGS) $(ASFLAGS) $<
160 $(VERBOSE)$(SYSTEM_TARGET)cpp -undef -P -DASSEMBLER -o $@ $(CPPFLAGS) $<
164 $(VERBOSE)$(AR) $(ARFLAGS) $@ $<
168 # Suck in user-specific optional Makerules files
169 -include Makerules.local