diff --git a/README.md b/README.md new file mode 100644 index 0000000..24b6cb1 --- /dev/null +++ b/README.md @@ -0,0 +1,58 @@ +### nenolod's buildsys fork + +This is a custom version of [buildsys] (http://github.com/Midar/buildsys), designed for +massively parallel builds. The differences between official buildsys and this buildsys +are: + +* A large amount of shell has been replaced with gmake builtin rule generation features. + +* You can use V=1 to get CFLAGS and LDFLAGS passed to commands. + +* Multiple `SUBDIRS` may be compiled in parallel. This ensures that there are no stalls + in the build process on multi-core boxes. If there is anything to build, we will be + building it. + +* Dependency generation is on a per-sourceunit basis and done entirely in parallel, including + across multiple `SUBDIRS`. This speeds up builds by allowing dependency generation to + already be completed when you get deeper in the source tree. + +* The messages produced by the buildsystem have been changed so that V=1 output doesn't + look strange. + +Other than that, it is mostly compatible with official buildsys at an "API level." + +In terms of performance increase, on stock buildsys, make -j4 takes around 50 seconds +to build audacious-plugins. On this fork, the build time is cut down to around 20 +seconds. That's a pretty big increase. + +### Possible problems / FAQ + +#### I am getting notices about missing libraries that should be built already! + +The way we parallelize SUBDIRS is by converting each SUBDIR into a make task. If a specific +SUBDIR depends on another SUBDIR, you should denote it like so: + +```Make +SUBDIRS = subdir1 subdir2 subdir3 subdir4 + +# subdir2 depends on subdir1 +subdir2: subdir1 + +# subdir3 depends on both subdir1 and subdir4 +subdir3: subdir2 subdir4 +``` + +This results in subdir1 and subdir4 being built first, then subdir2 and subdir3 +respectively. + +#### It won't build my SUBDIRS. + +Put your SUBDIRS before your include lines. You really are supposed to do this in +buildsys *anyway*, but for some reason it sometimes lets you put it after the fact. + +My fork does not let you do that as SUBDIRS are turned into make tasks. + +#### It doesn't work with FreeBSD make, NetBSD make, or some other non-GNU make + +Sorry, but in order to avoid using the shell unnecessarily, we have to depend on +GNU-make specific behaviour. Use gmake instead. diff --git a/buildsys.mk.in b/buildsys.mk.in index f4441c8..ec2e857 100644 --- a/buildsys.mk.in +++ b/buildsys.mk.in @@ -1,7 +1,11 @@ # +# atheme buildsys.mk +# Copyright (c) 2012 William Pitcock +# # Copyright (c) 2007, 2008, 2009, 2010, 2011, 2012 # Jonathan Schleifer # +# Based on buildsys.mk: # https://webkeks.org/git/?p=buildsys.git # # Permission to use, copy, modify, and/or distribute this software for any @@ -21,6 +25,7 @@ # POSSIBILITY OF SUCH DAMAGE. # +#V=1 PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ AS = @AS@ @@ -100,47 +105,21 @@ LIB_OBJS = ${OBJS:.o=.lib.o} PLUGIN_OBJS = ${OBJS:.o=.plugin.o} MO_FILES = ${LOCALES:.po=.mo} +DEPFILES = $(patsubst %,%.dep,${SRCS}) .SILENT: .SUFFIXES: .SUFFIXES: .beam .c .c.dep .cc .cc.dep .class .cxx .cxx.dep .d .erl .lib.o .java .mo .m .m.dep .mm .mm.dep .o .plugin.o .po .py .pyc .rc .S .S.dep .xpm -.PHONY: all subdirs pre-depend depend install install-extra uninstall uninstall-extra clean distclean locales +.PHONY: all subdirs ${SUBDIRS} pre-depend depend install install-extra uninstall uninstall-extra clean distclean locales -all: - ${MAKE} ${MFLAGS} subdirs - ${MAKE} ${MFLAGS} depend - ${MAKE} ${STATIC_LIB} ${STATIC_LIB_NOINST} ${STATIC_PIC_LIB} ${STATIC_PIC_LIB_NOINST} ${SHARED_LIB} ${SHARED_LIB_NOINST} ${PLUGIN} ${PLUGIN_NOINST} ${PROG} ${PROG_NOINST} ${JARFILE} locales +all: subdirs depend ${STATIC_LIB} ${STATIC_LIB_NOINST} ${STATIC_PIC_LIB} ${STATIC_PIC_LIB_NOINST} ${SHARED_LIB} ${SHARED_LIB_NOINST} ${PLUGIN} ${PLUGIN_NOINST} ${PROG} ${PROG_NOINST} ${JARFILE} locales -subdirs: - for i in ${SUBDIRS}; do \ - ${DIR_ENTER}; \ - ${MAKE} ${MFLAGS} || exit $$?; \ - ${DIR_LEAVE}; \ - done +subdirs: ${SUBDIRS} +${SUBDIRS}: + ${MAKE} -C $@ ${MFLAGS} -depend: pre-depend ${SRCS} - regen=0; \ - deps=""; \ - test -f .deps || regen=1; \ - for i in ${SRCS}; do \ - case $$i in \ - *.c | *.cc | *.cxx | *.m | *.mm | *.S) \ - test $$i -nt .deps && regen=1; \ - deps="$$deps $$i.dep"; \ - ;; \ - esac; \ - done; \ - if test x"$$regen" = x"1" -a x"$$deps" != x""; then \ - ${DEPEND_STATUS}; \ - if ${MAKE} ${MFLAGS} $$deps && cat $$deps >.deps; then \ - rm -f $$deps; \ - ${DEPEND_OK}; \ - else \ - :> .deps; \ - touch -t 0001010000 .deps; \ - ${DEPEND_FAILED}; \ - fi; \ - fi +depend: pre-depend ${DEPFILES} +pre-depend: .c.c.dep: ${CPP} ${CPPFLAGS} ${CFLAGS} -M $< | \ @@ -167,10 +146,9 @@ depend: pre-depend ${SRCS} sed 's/^\([^\.]*\)\.o:/\1.o \1.lib.o \1.plugin.o:/' >$@ || \ { rm -f $@; false; } -pre-depend: - ${PROG} ${PROG_NOINST}: ${EXT_DEPS} ${OBJS} ${OBJS_EXTRA} - ${LINK_STATUS} + LDOBJS="${OBJS} ${OBJS_EXTRA}"; \ + ${LINK_STATUS}; \ if ${LD} -o $@ ${OBJS} ${OBJS_EXTRA} ${LDFLAGS} ${LIBS}; then \ ${LINK_OK}; \ else \ @@ -194,6 +172,7 @@ ${JARFILE}: ${EXT_DEPS} ${JAR_MANIFEST} ${OBJS} ${OBJS_EXTRA} fi ${SHARED_LIB} ${SHARED_LIB_NOINST}: ${EXT_DEPS} ${LIB_OBJS} ${LIB_OBJS_EXTRA} + LDOBJS="${LIB_OBJS} ${LIB_OBJS_EXTRA}"; \ ${LINK_STATUS}; \ objs=""; \ ars=""; \ @@ -229,7 +208,8 @@ ${SHARED_LIB} ${SHARED_LIB_NOINST}: ${EXT_DEPS} ${LIB_OBJS} ${LIB_OBJS_EXTRA} done ${PLUGIN} ${PLUGIN_NOINST}: ${EXT_DEPS} ${PLUGIN_OBJS} - ${LINK_STATUS} + LDOBJS="${PLUGIN_OBJS}"; \ + ${LINK_STATUS}; \ objs=""; \ ars=""; \ for i in ${PLUGIN_OBJS}; do \ @@ -264,8 +244,9 @@ ${PLUGIN} ${PLUGIN_NOINST}: ${EXT_DEPS} ${PLUGIN_OBJS} done ${STATIC_LIB} ${STATIC_LIB_NOINST}: ${EXT_DEPS} ${OBJS} ${OBJS_EXTRA} - ${LINK_STATUS} - rm -f $@ + LDOBJS="${OBJS} ${OBJS_EXTRA}"; \ + ${LINK_STATUS}; \ + rm -f $@; \ objs=""; \ ars=""; \ for i in ${OBJS} ${OBJS_EXTRA}; do \ @@ -301,7 +282,8 @@ ${STATIC_LIB} ${STATIC_LIB_NOINST}: ${EXT_DEPS} ${OBJS} ${OBJS_EXTRA} done ${STATIC_PIC_LIB} ${STATIC_PIC_LIB_NOINST}: ${EXT_DEPS} ${LIB_OBJS} ${LIB_OBJS_EXTRA} - ${LINK_STATUS} + LDOBJS="${LIB_OBJS} ${LIB_OBJS_EXTRA}"; \ + ${LINK_STATUS}; \ rm -f $@ objs=""; \ ars=""; \ @@ -340,194 +322,153 @@ ${STATIC_PIC_LIB} ${STATIC_PIC_LIB_NOINST}: ${EXT_DEPS} ${LIB_OBJS} ${LIB_OBJS_E locales: ${MO_FILES} .c.o: - ${COMPILE_STATUS} - if ${CC} ${CFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ - ${COMPILE_OK}; \ - else \ - ${COMPILE_FAILED}; \ - fi + COMPILER="${CC}"; \ + COMPILER_FLAGS="${CFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_STATUS}; \ + $${COMPILER} $${COMPILER_FLAGS} + .c.lib.o: - ${COMPILE_LIB_STATUS} - if ${CC} ${LIB_CFLAGS} ${CFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ - ${COMPILE_LIB_OK}; \ - else \ - ${COMPILE_LIB_FAILED}; \ - fi + COMPILER="${CC}"; \ + COMPILER_FLAGS="${LIB_CFLAGS} ${CFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_LIB_STATUS}; \ + $${COMPILER} $${COMPILER_FLAGS} + .c.plugin.o: - ${COMPILE_PLUGIN_STATUS} - if ${CC} ${PLUGIN_CFLAGS} ${CFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ - ${COMPILE_PLUGIN_OK}; \ - else \ - ${COMPILE_PLUGIN_FAILED}; \ - fi + COMPILER="${CC}"; \ + COMPILER_FLAGS="${PLUGIN_CFLAGS} ${CFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_PLUGIN_STATUS}; \ + $${COMPILER} $${COMPILER_FLAGS} .cc.o .cxx.o: - ${COMPILE_STATUS} - if ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ - ${COMPILE_OK}; \ - else \ - ${COMPILE_FAILED}; \ - fi + COMPILER="${CXX}"; \ + COMPILER_FLAGS="${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_STATUS}; \ + $${COMPILER} $${COMPILER_FLAGS} + .cc.lib.o .cxx.lib.o: - ${COMPILE_LIB_STATUS} - if ${CXX} ${LIB_CFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ - ${COMPILE_LIB_OK}; \ - else \ - ${COMPILE_LIB_FAILED}; \ - fi + COMPILER="${CXX}"; \ + COMPILER_FLAGS="${LIB_CFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_LIB_STATUS}; \ + $${COMPILER} $${COMPILER_FLAGS} + .cc.plugin.o .cxx.plugin.o: - ${COMPILE_PLUGIN_STATUS} - if ${CXX} ${PLUGIN_CFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ - ${COMPILE_PLUGIN_OK}; \ - else \ - ${COMPILE_PLUGIN_FAILED}; \ - fi + COMPILER="${CXX}"; \ + COMPILER_FLAGS="${PLUGIN_CFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_PLUGIN_STATUS}; \ + $${COMPILER} $${COMPILER_FLAGS} .d.o: - ${COMPILE_STATUS} - if test x"$(basename ${DC})" = x"dmd"; then \ - if ${DC} ${DFLAGS} -c -of$@ $<; then \ - ${COMPILE_OK}; \ - else \ - ${COMPILE_FAILED}; \ - fi \ + COMPILER="${DC}"; \ + ${COMPILE_STATUS}; \ + if test x"$(basename ${COMPILER})" = x"dmd"; then \ + $${COMPILER} ${DFLAGS} -c -of$@ $<; \ else \ - if ${DC} ${DFLAGS} -c -o $@ $<; then \ - ${COMPILE_OK}; \ - else \ - ${COMPILE_FAILED}; \ - fi \ + $${COMPILER} ${DFLAGS} -c -o $@ $<; \ fi .erl.beam: - ${COMPILE_STATUS} - if ${ERLC} ${ERLCFLAGS} -o $@ $<; then \ - ${COMPILE_OK}; \ - else \ - ${COMPILE_FAILED}; \ - fi + COMPILER="${ERLC}"; \ + COMPILER_FLAGS="${ERLCFLAGS} -o $@ $<"; \ + ${COMPILE_STATUS}; \ + $${COMPILER} $${COMPILER_FLAGS} .java.class: - ${COMPILE_STATUS} - if ${JAVAC} ${JAVACFLAGS} $<; then \ - ${COMPILE_OK}; \ - else \ - ${COMPILE_FAILED}; \ - fi + COMPILER="${JAVAC}"; \ + COMPILER_FLAGS="${JAVACFLAGS} $<"; \ + ${COMPILE_STATUS}; \ + $${COMPILER} $${COMPILER_FLAGS} .m.o: - ${COMPILE_STATUS} - if ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ - ${COMPILE_OK}; \ - else \ - ${COMPILE_FAILED}; \ - fi + COMPILER="${OBJC}"; \ + COMPILER_FLAGS="${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_STATUS}; \ + $${COMPILER} $${COMPILER_FLAGS} + .m.lib.o: - ${COMPILE_LIB_STATUS} - if ${OBJC} ${LIB_CFLAGS} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ - ${COMPILE_LIB_OK}; \ - else \ - ${COMPILE_LIB_FAILED}; \ - fi + COMPILER="${OBJC}"; \ + COMPILER_FLAGS="${LIB_CFLAGS} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_LIB_STATUS}; \ + $${COMPILER} $${COMPILER_FLAGS} + .m.plugin.o: - ${COMPILE_PLUGIN_STATUS} - if ${OBJC} ${PLUGIN_CFLAGS} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ - ${COMPILE_PLUGIN_OK}; \ - else \ - ${COMPILE_PLUGIN_FAILED}; \ - fi + COMPILER="${OBJC}"; \ + COMPILER_FLAGS="${PLUGIN_CFLAGS} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_PLUGIN_STATUS}; \ + $${COMPILER} $${COMPILER_FLAGS} .mm.o: - ${COMPILE_STATUS} - if ${OBJCXX} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ - ${COMPILE_OK}; \ - else \ - ${COMPILE_FAILED}; \ - fi + COMPILER="${OBJCXX}"; \ + COMPILER_FLAGS="${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_STATUS}; \ + $${COMPILER} $${COMPILER_FLAGS} + .mm.lib.o: - ${COMPILE_LIB_STATUS} - if ${OBJCXX} ${LIB_CFLAGS} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ - ${COMPILE_LIB_OK}; \ - else \ - ${COMPILE_LIB_FAILED}; \ - fi + COMPILER="${OBJCXX}"; \ + COMPILER_FLAGS="${LIB_CFLAGS} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_LIB_STATUS}; \ + $${COMPILER} $${COMPILER_FLAGS} + .mm.plugin.o: - ${COMPILE_PLUGIN_STATUS} - if ${OBJCXX} ${PLUGIN_CFLAGS} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ - ${COMPILE_PLUGIN_OK}; \ - else \ - ${COMPILE_PLUGIN_FAILED}; \ - fi + COMPILER="${OBJCXX}"; \ + COMPILER_FLAGS="${PLUGIN_CFLAGS} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_PLUGIN_STATUS}; \ + $${COMPILER} $${COMPILER_FLAGS} .po.mo: - ${COMPILE_STATUS} - if ${MSGFMT} -c -o $@ $<; then \ - ${COMPILE_OK}; \ - else \ - ${COMPILE_FAILED}; \ - fi + COMPILER="${MSGFMT}"; \ + COMPILER_FLAGS="-c -o $@ $<"; \ + ${COMPILE_RESOURCE_STATUS}; \ + $${COMPILER} $${COMPILER_FLAGS} .py.pyc: - ${COMPILE_STATUS} - if ${PYTHON} ${PYTHON_FLAGS} -c "import py_compile; py_compile.compile('$<')"; then \ - ${COMPILE_OK}; \ - else \ - ${COMPILE_FAILED}; \ - fi + COMPILER="${PYTHON}"; \ + COMPILER_FLAGS="${PYTHON_FLAGS}"; \ + ${COMPILE_RESOURCE_STATUS}; \ + $${COMPILER} $${COMPILER_FLAGS} -c "import py_compile; py_compile.compile('$<')" .rc.o .rc.lib.o .rc.plugin.o: - ${COMPILE_STATUS} - if ${WINDRES} ${CPPFLAGS} -J rc -O coff -o $@ $<; then \ - ${COMPILE_OK}; \ - else \ - ${COMPILE_FAILED}; \ - fi + COMPILER="${WINDRES}"; \ + COMPILER_FLAGS="${CPPFLAGS} -J rc -O coff -o $@ $<"; \ + ${COMPILE_RESOURCE_STATUS}; \ + $${COMPILER} $${COMPILER_FLAGS} .S.o: - ${COMPILE_STATUS} - if ${AS} ${ASFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ - ${COMPILE_OK}; \ - else \ - ${COMPILE_FAILED}; \ - fi + COMPILER="${AS}"; \ + COMPILER_FLAGS="${ASFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_STATUS}; \ + $${COMPILER} $${COMPILER_FLAGS} + .S.lib.o: - ${COMPILE_LIB_STATUS} - if ${AS} ${LIB_CFLAGS} ${ASFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ - ${COMPILE_LIB_OK}; \ - else \ - ${COMPILE_LIB_FAILED}; \ - fi + COMPILER="${AS}"; \ + COMPILER_FLAGS="${LIB_CFLAGS} ${ASFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_LIB_STATUS}; \ + $${COMPILER} $${COMPILER_FLAGS} + .S.plugin.o: - ${COMPILE_PLUGIN_STATUS} - if ${AS} ${PLUGIN_CFLAGS} ${ASFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ - ${COMPILE_PLUGIN_OK}; \ - else \ - ${COMPILE_PLUGIN_FAILED}; \ - fi + COMPILER="${AS}"; \ + COMPILER_FLAGS="${PLUGIN_CFLAGS} ${ASFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_PLUGIN_STATUS}; \ + $${COMPILER} $${COMPILER_FLAGS} .xpm.o: - ${COMPILE_STATUS} - if ${CC} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<; then \ - ${COMPILE_OK}; \ - else \ - ${COMPILE_FAILED}; \ - fi -.xpm.lib.o: - ${COMPILE_LIB_STATUS} - if ${CC} ${LIB_CFLAGS} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<; then \ - ${COMPILE_LIB_OK}; \ - else \ - ${COMPILE_LIB_FAILED}; \ - fi -.xpm.plugin.o: - ${COMPILE_PLUGIN_STATUS} - if ${CC} ${PLUGIN_CFLAGS} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<; then \ - ${COMPILE_PLUGIN_OK}; \ - else \ - ${COMPILE_PLUGIN_FAILED}; \ - fi + COMPILER="${CC}"; \ + COMPILER_FLAGS="${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<"; \ + ${COMPILE_STATUS}; \ + $${COMPILER} $${COMPILER_FLAGS} -install: all install-extra +.xpm.lib.o: + COMPILER="${CC}"; \ + COMPILER_FLAGS="${LIB_CFLAGS} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<"; \ + ${COMPILE_LIB_STATUS}; \ + $${COMPILER} $${COMPILER_FLAGS} + +.xpm.plugin.o: + COMPILER="${CC}"; \ + COMPILER_FLAGS="${PLUGIN_CFLAGS} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<"; \ + ${COMPILE_PLUGIN_STATUS}; \ + $${COMPILER} $${COMPILER_FLAGS} + +install: ${SHARED_LIB} ${STATIC_LIB} ${STATIC_PIC_LIB} ${PLUGIN} ${PROG} install-extra for i in ${SUBDIRS}; do \ ${DIR_ENTER}; \ ${MAKE} ${MFLAGS} install || exit $$?; \ @@ -725,7 +666,7 @@ distclean: clean ${DIR_LEAVE}; \ done - for i in ${DISTCLEAN} .deps *~; do \ + for i in ${DISTCLEAN} *.dep *~; do \ if test -f $$i -o -d $$i; then \ if rm -fr $$i; then \ ${DELETE_OK}; \ @@ -735,27 +676,62 @@ distclean: clean fi \ done -DIR_ENTER = printf "@TERM_EL@@TERM_SETAF6@Entering directory @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF6@.@TERM_SGR0@\n"; cd $$i || exit $$? -DIR_LEAVE = printf "@TERM_EL@@TERM_SETAF6@Leaving directory @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF6@.@TERM_SGR0@\n"; cd .. || exit $$? -DEPEND_STATUS = printf "@TERM_EL@@TERM_SETAF3@Generating dependencies...@TERM_SGR0@\r" -DEPEND_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully generated dependencies.@TERM_SGR0@\n" -DEPEND_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to generate dependencies!@TERM_SGR0@\n"; exit $$err -COMPILE_STATUS = printf "@TERM_EL@@TERM_SETAF3@Compiling @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF3@...@TERM_SGR0@\r" -COMPILE_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully compiled @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF2@.@TERM_SGR0@\n" -COMPILE_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to compile @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF1@!@TERM_SGR0@\n"; exit $$err -COMPILE_LIB_STATUS = printf "@TERM_EL@@TERM_SETAF3@Compiling @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF3@ (lib)...@TERM_SGR0@\r" -COMPILE_LIB_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully compiled @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF2@ (lib).@TERM_SGR0@\n" -COMPILE_LIB_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to compile @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF1@ (lib)!@TERM_SGR0@\n"; exit $$err -COMPILE_PLUGIN_STATUS = printf "@TERM_EL@@TERM_SETAF3@Compiling @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF3@ (plugin)...@TERM_SGR0@\r" -COMPILE_PLUGIN_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully compiled @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF2@ (plugin).@TERM_SGR0@\n" -COMPILE_PLUGIN_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to compile @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF1@ (plugin)!@TERM_SGR0@\n"; exit $$err -LINK_STATUS = printf "@TERM_EL@@TERM_SETAF3@Linking @TERM_BOLD@$@@TERM_SGR0@@TERM_SETAF3@...@TERM_SGR0@\r" -LINK_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully linked @TERM_BOLD@$@@TERM_SGR0@@TERM_SETAF2@.@TERM_SGR0@\n" -LINK_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to link @TERM_BOLD@$@@TERM_SGR0@@TERM_SETAF1@!@TERM_SGR0@\n"; exit $$err -INSTALL_STATUS = printf "@TERM_EL@@TERM_SETAF3@Installing @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF3@...@TERM_SGR0@\r" -INSTALL_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully installed @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF2@.@TERM_SGR0@\n" -INSTALL_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to install @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF1@!@TERM_SGR0@\n"; exit $$err -DELETE_OK = printf "@TERM_EL@@TERM_SETAF4@Deleted @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF4@.@TERM_SGR0@\n" -DELETE_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to delete @TERM_BOLD@$$i@TERM_SGR0@@TERM_SETAF1@!@TERM_SGR0@\n"; exit $$err +ifndef V -include .deps +DIR_ENTER = cd $$i || exit $$? +DIR_LEAVE = cd .. || exit $$? +DEPEND_STATUS = true +DEPEND_OK = true +DEPEND_FAILED = exit $$? +COMPILE_STATUS = printf "CompileExe: $@\n" +COMPILE_OK = true +COMPILE_FAILED = exit $$? +COMPILE_LIB_STATUS = printf "CompileLib: $@\n" +COMPILE_LIB_OK = true +COMPILE_LIB_FAILED = exit $$? +COMPILE_PLUGIN_STATUS = printf "CompilePlugin: $@\n" +COMPILE_PLUGIN_OK = true +COMPILE_PLUGIN_FAILED = exit $$? +COMPILE_RESOURCE_STATUS = printf "CompileResource: $@\n" +COMPILE_RESOURCE_OK = true +COMPILE_RESOURCE_FAILED = exit $$? +LINK_STATUS = printf "Link: $@\n" +LINK_OK = true +LINK_FAILED = exit $$? +INSTALL_STATUS = printf "Install: $$i\n" +INSTALL_OK = true +INSTALL_FAILED = exit $$? +DELETE_OK = printf "Delete: $$i\n" +DELETE_FAILED = exit $$? + +else + +DIR_ENTER = cd $$i || exit $$? +DIR_LEAVE = cd .. || exit $$? +DEPEND_STATUS = printf "BuildDepends\n" +DEPEND_OK = printf "Done\n" +DEPEND_FAILED = exit $$? +COMPILE_STATUS = printf "CompileExe: $$COMPILER $${COMPILER_FLAGS}\n" +COMPILE_OK = true +COMPILE_FAILED = exit $$? +COMPILE_LIB_STATUS = printf "CompileLib: $$COMPILER $${COMPILER_FLAGS}\n" +COMPILE_LIB_OK = true +COMPILE_LIB_FAILED = exit $$? +COMPILE_PLUGIN_STATUS = printf "CompilePlugin: $$COMPILER $${COMPILER_FLAGS}\n" +COMPILE_PLUGIN_OK = true +COMPILE_PLUGIN_FAILED = exit $$? +COMPILE_RESOURCE_STATUS = printf "CompileResource: $$COMPILER $${COMPILER_FLAGS}\n" +COMPILE_RESOURCE_OK = true +COMPILE_RESOURCE_FAILED = exit $$? +LINK_STATUS = printf "Link: ${LD} $@ $$LDOBJS ${LDFLAGS} ${LIBS}\n" +LINK_OK = true +LINK_FAILED = exit $$? +INSTALL_STATUS = printf "Install: $$i\n" +INSTALL_OK = true +INSTALL_FAILED = exit $$? +DELETE_OK = printf "Delete: $$i\n" +DELETE_FAILED = exit $$? + +endif + +-include ${DEPFILES}