default:
-include packages.mk
-include targets.mk
-
-
G_DIRMK := dir.mk
G_VARSMK := vars.mk
G_FILESMK := files.mk
G_TVARSMK := tvars.mk
+include packages.mk
+include targets.mk
+include ${G_RULESMK}
+
+
include ${G_VARSMK}
include ${G_LISTSMK}
# how to link the main target
${TARGETTMP_$P}: ${L_OBJS_$P} | $${@D}
- ${Q1}${PRNTFMT} "${CXX}" "$@"
- ${Q2}${CXX} ${CXXFLAGS} ${LNKFLAGS} -o $@ $^ ${LIBS}
+ ${cmd-link}
# rule to copy tmp target to working directory
${TARGET_$P}: ${TARGETTMP_$P} | $${@D}
- ${Q1}${PRNTFMT} "cp" "$@"
- ${Q2}cp $< $@
+ ${cmd-cp}
# how to make a directory
${L_BLDDIRS_$P}:
# rule to make an object file from a .cpp
${OBJSDIR_$P}%.o: ${SRCSDIR_$P}%.cpp | $${@D}
- ${Q1}${PRNTFMT} "${CXX}" "$@"
- ${Q2}${CXX} ${CXXFLAGS} -c -o $@ $< ${INCFLAGS}
+ ${cmd-cpptoobj}
# rule to make a depend file from a .cpp
# be clever and escape the / chars in file paths
# DON'T simply use another sed delimiter or it can't appear in the file paths
${DEPSDIR_$P}%.d: ${SRCSDIR_$P}%.cpp | $${@D}
- ${Q1}${PRNTFMT} "DEP" "$@"
- ${Q2}${CXX} -MM ${CXXFLAGS} $< ${INCFLAGS} | sed 's/\(^.*\):/$(subst /,\/,${@:${DEPSDIR}%.d=${OBJSDIR}%.o} $@):/' > $@
+ ${cmd-cpptodep}
L_CLEANCMDS += cleanbin-$P
--- /dev/null
+
+define cmd-link
+ ${Q1}${PRNTFMT} "${CXX}" "$@"
+ ${Q2}${CXX} ${CXXFLAGS} ${LNKFLAGS} -o $@ $^ ${LIBS}
+endef
+
+define cmd-cp
+ ${Q1}${PRNTFMT} "cp" "$@"
+ ${Q2}cp $< $@
+endef
+
+define cmd-cpptoobj
+ ${Q1}${PRNTFMT} "${CXX}" "$@"
+ ${Q2}${CXX} ${CXXFLAGS} -c -o $@ $< ${INCFLAGS}
+endef
+
+define cmd-cpptodep
+ ${Q1}${PRNTFMT} "DEP" "$@"
+ ${Q2}${CXX} -MM ${CXXFLAGS} $< ${INCFLAGS} | sed 's/\(^.*\):/$(subst /,\/,${@:${DEPSDIR}%.d=${OBJSDIR}%.o} $@):/' > $@
+endef
+
# HACK
tests/bind/libbear.so.0: lib/bind/libbear.so.0.0 | $${@D}
- ${Q1}${PRNTFMT} "cp" "$@"
- ${Q2}cp $< $@
+ ${cmd-cp}
# how to make a directory
${L_BLDDIRS_$P}:
# rule to make an object file from a .cpp
${OBJSDIR_$P}%.o: ${SRCSDIR_$P}%.cpp | $${@D}
- ${Q1}${PRNTFMT} "${CXX}" "$@"
- ${Q2}${CXX} ${CXXFLAGS} -c -o $@ $< ${INCFLAGS}
+ ${cmd-cpptoobj}
# rule to make a depend file from a .cpp
# be clever and escape the / chars in file paths
# DON'T simply use another sed delimiter or it can't appear in the file paths
${DEPSDIR_$P}%.d: ${SRCSDIR_$P}%.cpp | $${@D}
- ${Q1}${PRNTFMT} "DEP" "$@"
- ${Q2}${CXX} -MM ${CXXFLAGS} $< ${INCFLAGS} | sed 's/\(^.*\):/$(subst /,\/,${@:${DEPSDIR}%.d=${OBJSDIR}%.o} $@):/' > $@
+ ${cmd-cpptodep}
L_CLEANCMDS += cleanbin-$P
# how to link the main target
${TARGETTMP_$D}: ${L_OBJS_$D} | $${@D}
- ${Q1}${PRNTFMT} "${CXX}" "$@"
- ${Q2}${CXX} ${CXXFLAGS} ${LNKFLAGS} -o $@ $^ ${LIBS}
+ ${cmd-link}
# rule to copy tmp target to working directory
${TARGET_$D}: ${TARGETTMP_$D} | $${@D}
- ${Q1}${PRNTFMT} "cp" "$@"
- ${Q2}cp $< $@
+ ${cmd-cp}
# how to link the main target
${TARGETTMP_$D}: ${L_OBJS_$D} | $${@D}
- ${Q1}${PRNTFMT} "${CXX}" "$@"
- ${Q2}${CXX} ${CXXFLAGS} ${LNKFLAGS} -o $@ $^ ${LIBS}
+ ${cmd-link}
# rule to copy tmp target to working directory
${TARGET_$D}: ${TARGETTMP_$D} | $${@D}
- ${Q1}${PRNTFMT} "cp" "$@"
- ${Q2}cp $< $@
+ ${cmd-cp}