3 # This creates a program
6 # $(SOURCE) - The source code to use
7 # $(PROGRAM) - The name of the program
8 # $(SLIBS) - Shared libs to link against
9 # $(LIB_MAKES) - Shared libary make files to depend on - to ensure we get
10 # remade when the shared library version increases.
12 # See defaults.mak for information about LOCAL
14 # Some local definitions
16 $(LOCAL
)-OBJS
:= $(addprefix $(OBJ
)/,$(addsuffix .o
,$(notdir $(basename $(SOURCE
)))))
17 $(LOCAL
)-DEP
:= $(addprefix $(DEP
)/,$(addsuffix .o.d
,$(notdir $(basename $(SOURCE
)))))
18 $(LOCAL
)-BIN
:= $(BIN
)/$(PROGRAM
)
19 $(LOCAL
)-SLIBS
:= $(SLIBS
)
20 $(LOCAL
)-MKS
:= $(addprefix $(BASE
)/,$(LIB_MAKES
))
22 # Install the command hooks
23 program
: $(BIN
)/$(PROGRAM
)
25 veryclean
: veryclean
/$(LOCAL
)
28 .PHONY
: clean/$(LOCAL
) veryclean
/$(LOCAL
)
30 -rm -f
$($(@F
)-OBJS
) $($(@F
)-DEP
)
31 veryclean
/$(LOCAL
): clean/$(LOCAL
)
34 # The convience binary build rule
36 $(PROGRAM
): $($(LOCAL
)-BIN
)
38 # The binary build rule
39 $($(LOCAL
)-BIN
): $($(LOCAL
)-OBJS
) $($(LOCAL
)-MKS
)
40 echo Building program
$@
41 $(CXX
) $(CXXFLAGS
) $(LDFLAGS
) $(LFLAGS
) -o
$@
$(filter %.o
,$^
) $($(@F
)-SLIBS
) $(LEFLAGS
)
46 echo Compiling
$< to
$@
47 $(CXX
) -c
$(INLINEDEPFLAG
) $(CPPFLAGS
) $(CXXFLAGS
) -o
$@
$<
50 # Include the dependencies that are available
51 The_DFiles
= $(wildcard $($(LOCAL
)-DEP
))
52 ifneq ($(words $(The_DFiles
)),0)