From 2db450bfd60882492fe6a46475f8ddbd7c96a00c Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Wed, 18 Apr 2012 15:58:36 +0000 Subject: [PATCH 1/5] Add support for make V=1 --- buildsys.mk.in | 211 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 149 insertions(+), 62 deletions(-) diff --git a/buildsys.mk.in b/buildsys.mk.in index f4441c8..f4a1c92 100644 --- a/buildsys.mk.in +++ b/buildsys.mk.in @@ -170,7 +170,8 @@ depend: pre-depend ${SRCS} 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 +195,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 +231,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 +267,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 +305,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,59 +345,72 @@ ${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 \ + COMPILER="${CC}"; \ + COMPILER_FLAGS="${CFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_STATUS}; \ + if $${COMPILER} $${COMPILER_FLAGS}; then \ ${COMPILE_OK}; \ else \ ${COMPILE_FAILED}; \ fi .c.lib.o: - ${COMPILE_LIB_STATUS} - if ${CC} ${LIB_CFLAGS} ${CFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ + COMPILER="${CC}"; \ + COMPILER_FLAGS="${LIB_CFLAGS} ${CFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_LIB_STATUS}; \ + if $${COMPILER} $${COMPILER_FLAGS}; then \ ${COMPILE_LIB_OK}; \ else \ ${COMPILE_LIB_FAILED}; \ fi .c.plugin.o: - ${COMPILE_PLUGIN_STATUS} - if ${CC} ${PLUGIN_CFLAGS} ${CFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ + COMPILER="${CC}"; \ + COMPILER_FLAGS="${PLUGIN_CFLAGS} ${CFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_PLUGIN_STATUS}; \ + if $${COMPILER} $${COMPILER_FLAGS}; then \ ${COMPILE_PLUGIN_OK}; \ else \ ${COMPILE_PLUGIN_FAILED}; \ fi .cc.o .cxx.o: - ${COMPILE_STATUS} - if ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ + COMPILER="${CXX}"; \ + COMPILER_FLAGS="${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_STATUS}; \ + if $${COMPILER} $${COMPILER_FLAGS}; then \ ${COMPILE_OK}; \ else \ ${COMPILE_FAILED}; \ fi .cc.lib.o .cxx.lib.o: - ${COMPILE_LIB_STATUS} - if ${CXX} ${LIB_CFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ + COMPILER="${CXX}"; \ + COMPILER_FLAGS="${LIB_CFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_LIB_STATUS}; \ + if $${COMPILER} $${COMPILER_FLAGS}; then \ ${COMPILE_LIB_OK}; \ else \ ${COMPILE_LIB_FAILED}; \ fi .cc.plugin.o .cxx.plugin.o: - ${COMPILE_PLUGIN_STATUS} - if ${CXX} ${PLUGIN_CFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ + COMPILER="${CXX}"; \ + COMPILER_FLAGS="${PLUGIN_CFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_PLUGIN_STATUS}; \ + if $${COMPILER} $${COMPILER_FLAGS}; then \ ${COMPILE_PLUGIN_OK}; \ else \ ${COMPILE_PLUGIN_FAILED}; \ fi .d.o: - ${COMPILE_STATUS} - if test x"$(basename ${DC})" = x"dmd"; then \ - if ${DC} ${DFLAGS} -c -of$@ $<; then \ + COMPILER="${DC}"; \ + ${COMPILE_STATUS}; \ + if test x"$(basename ${COMPILER})" = x"dmd"; then \ + if $${COMPILER} ${DFLAGS} -c -of$@ $<; then \ ${COMPILE_OK}; \ else \ ${COMPILE_FAILED}; \ fi \ else \ - if ${DC} ${DFLAGS} -c -o $@ $<; then \ + if $${COMPILER} ${DFLAGS} -c -o $@ $<; then \ ${COMPILE_OK}; \ else \ ${COMPILE_FAILED}; \ @@ -400,134 +418,168 @@ locales: ${MO_FILES} fi .erl.beam: - ${COMPILE_STATUS} - if ${ERLC} ${ERLCFLAGS} -o $@ $<; then \ + COMPILER="${ERLC}"; \ + COMPILER_FLAGS="${ERLCFLAGS} -o $@ $<"; \ + ${COMPILE_STATUS}; \ + if $${COMPILER} $${COMPILER_FLAGS}; then \ ${COMPILE_OK}; \ else \ ${COMPILE_FAILED}; \ fi .java.class: - ${COMPILE_STATUS} - if ${JAVAC} ${JAVACFLAGS} $<; then \ + COMPILER="${JAVAC}"; \ + COMPILER_FLAGS="${JAVACFLAGS} $<"; \ + ${COMPILE_STATUS}; \ + if $${COMPILER} $${COMPILER_FLAGS} $<; then \ ${COMPILE_OK}; \ else \ ${COMPILE_FAILED}; \ fi .m.o: - ${COMPILE_STATUS} - if ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ + COMPILER="${OBJC}"; \ + COMPILER_FLAGS="${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_STATUS}; \ + if $${COMPILER} $${COMPILER_FLAGS}; then \ ${COMPILE_OK}; \ else \ ${COMPILE_FAILED}; \ fi .m.lib.o: - ${COMPILE_LIB_STATUS} - if ${OBJC} ${LIB_CFLAGS} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ + COMPILER="${OBJC}"; \ + COMPILER_FLAGS="${LIB_CFLAGS} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_LIB_STATUS}; \ + if $${COMPILER} $${COMPILER_FLAGS}; then \ ${COMPILE_LIB_OK}; \ else \ ${COMPILE_LIB_FAILED}; \ fi .m.plugin.o: - ${COMPILE_PLUGIN_STATUS} - if ${OBJC} ${PLUGIN_CFLAGS} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ + COMPILER="${OBJC}"; \ + COMPILER_FLAGS="${PLUGIN_CFLAGS} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_PLUGIN_STATUS}; \ + if $${COMPILER} $${COMPILER_FLAGS}; then \ ${COMPILE_PLUGIN_OK}; \ else \ ${COMPILE_PLUGIN_FAILED}; \ fi .mm.o: - ${COMPILE_STATUS} - if ${OBJCXX} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ + COMPILER="${OBJCXX}"; \ + COMPILER_FLAGS="${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_STATUS}; \ + if $${COMPILER} $${COMPILER_FLAGS}; then \ ${COMPILE_OK}; \ else \ ${COMPILE_FAILED}; \ fi .mm.lib.o: - ${COMPILE_LIB_STATUS} - if ${OBJCXX} ${LIB_CFLAGS} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ + COMPILER="${OBJCXX}"; \ + COMPILER_FLAGS="${LIB_CFLAGS} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_LIB_STATUS}; \ + if $${COMPILER} $${COMPILER_FLAGS}; then \ ${COMPILE_LIB_OK}; \ else \ ${COMPILE_LIB_FAILED}; \ fi .mm.plugin.o: - ${COMPILE_PLUGIN_STATUS} - if ${OBJCXX} ${PLUGIN_CFLAGS} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ + COMPILER="${OBJCXX}"; \ + COMPILER_FLAGS="${PLUGIN_CFLAGS} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_PLUGIN_STATUS}; \ + if $${COMPILER} $${COMPILER_FLAGS}; then \ ${COMPILE_PLUGIN_OK}; \ else \ ${COMPILE_PLUGIN_FAILED}; \ fi .po.mo: - ${COMPILE_STATUS} - if ${MSGFMT} -c -o $@ $<; then \ - ${COMPILE_OK}; \ + COMPILER="${MSGFMT}"; \ + COMPILER_FLAGS="-c -o $@ $<"; \ + ${COMPILE_RESOURCE_STATUS}; \ + if $${COMPILER} $${COMPILER_FLAGS}; then \ + ${COMPILE_RESOURCE_OK}; \ else \ - ${COMPILE_FAILED}; \ + ${COMPILE_RESOURCE_FAILED}; \ fi .py.pyc: - ${COMPILE_STATUS} - if ${PYTHON} ${PYTHON_FLAGS} -c "import py_compile; py_compile.compile('$<')"; then \ - ${COMPILE_OK}; \ + COMPILER="${PYTHON}"; \ + COMPILER_FLAGS="${PYTHON_FLAGS}"; \ + ${COMPILE_RESOURCE_STATUS}; \ + if $${COMPILER} $${COMPILER_FLAGS} -c "import py_compile; py_compile.compile('$<')"; then \ + ${COMPILE_RESOURCE_OK}; \ else \ - ${COMPILE_FAILED}; \ + ${COMPILE_RESOURCE_FAILED}; \ fi .rc.o .rc.lib.o .rc.plugin.o: - ${COMPILE_STATUS} - if ${WINDRES} ${CPPFLAGS} -J rc -O coff -o $@ $<; then \ - ${COMPILE_OK}; \ + COMPILER="${WINDRES}"; \ + COMPILER_FLAGS="${CPPFLAGS} -J rc -O coff -o $@ $<"; \ + ${COMPILE_RESOURCE_STATUS}; \ + if $${COMPILER} $${COMPILER_FLAGS}; then \ + ${COMPILE_RESOURCE_OK}; \ else \ - ${COMPILE_FAILED}; \ + ${COMPILE_RESOURCE_FAILED}; \ fi .S.o: - ${COMPILE_STATUS} - if ${AS} ${ASFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ + COMPILER="${AS}"; \ + COMPILER_FLAGS="${ASFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_STATUS}; \ + if $${COMPILER} $${COMPILER_FLAGS}; then \ ${COMPILE_OK}; \ else \ ${COMPILE_FAILED}; \ fi .S.lib.o: - ${COMPILE_LIB_STATUS} - if ${AS} ${LIB_CFLAGS} ${ASFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ + COMPILER="${AS}"; \ + COMPILER_FLAGS="${LIB_CFLAGS} ${ASFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_LIB_STATUS}; \ + if $${COMPILER} $${COMPILER_FLAGS}; then \ ${COMPILE_LIB_OK}; \ else \ ${COMPILE_LIB_FAILED}; \ fi .S.plugin.o: - ${COMPILE_PLUGIN_STATUS} - if ${AS} ${PLUGIN_CFLAGS} ${ASFLAGS} ${CPPFLAGS} -c -o $@ $<; then \ + COMPILER="${AS}"; \ + COMPILER_FLAGS="${PLUGIN_CFLAGS} ${ASFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ + ${COMPILE_PLUGIN_STATUS}; \ + if $${COMPILER} $${COMPILER_FLAGS}; then \ ${COMPILE_PLUGIN_OK}; \ else \ ${COMPILE_PLUGIN_FAILED}; \ fi .xpm.o: - ${COMPILE_STATUS} - if ${CC} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<; then \ + COMPILER="${CC}"; \ + COMPILER_FLAGS="${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<"; \ + ${COMPILE_STATUS}; \ + if $${COMPILER} $${COMPILER_FLAGS}; then \ ${COMPILE_OK}; \ else \ ${COMPILE_FAILED}; \ fi .xpm.lib.o: - ${COMPILE_LIB_STATUS} - if ${CC} ${LIB_CFLAGS} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<; then \ + COMPILER="${CC}"; \ + COMPILER_FLAGS="${LIB_CFLAGS} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<"; \ + ${COMPILE_LIB_STATUS}; \ + if $${COMPILER} $${COMPILER_FLAGS}; 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 \ + COMPILER="${CC}"; \ + COMPILER_FLAGS="${PLUGIN_CFLAGS} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<"; \ + ${COMPILE_PLUGIN_STATUS}; \ + if $${COMPILER} $${COMPILER_FLAGS}; then \ ${COMPILE_PLUGIN_OK}; \ else \ ${COMPILE_PLUGIN_FAILED}; \ fi -install: all install-extra +install: ${SHARED_LIB} ${STATIC_LIB} ${STATIC_PIC_LIB} ${PLUGIN} ${PROG} install-extra for i in ${SUBDIRS}; do \ ${DIR_ENTER}; \ ${MAKE} ${MFLAGS} install || exit $$?; \ @@ -735,6 +787,8 @@ distclean: clean fi \ done +ifndef V + 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" @@ -749,6 +803,9 @@ COMPILE_LIB_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to compile @T 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 +COMPILE_RESOURCE_STATUS = printf "@TERM_EL@@TERM_SETAF3@Compiling @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF3@ (resource)...@TERM_SGR0@\r" +COMPILE_RESOURCE_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully compiled @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF2@ (resource).@TERM_SGR0@\n" +COMPILE_RESOURCE_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to compile @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF1@ (resource)!@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 @@ -758,4 +815,34 @@ INSTALL_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to install @TERM_ 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 +else + +DIR_ENTER = printf "DirectoryEnter: $$i\n"; cd $$i || exit $$? +DIR_LEAVE = printf "DirectoryLeave: $$i\n"; cd .. || exit $$? +DEPEND_STATUS = printf "GenerateDependencies\n" +DEPEND_OK = true +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 .deps From ff1cd9c415cd02e335f7e0f1f43588d1367d9dfc Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Wed, 18 Apr 2012 21:50:47 +0000 Subject: [PATCH 2/5] Sync with Atheme buildsys.mk. --- buildsys.mk.in | 273 +++++++++++++++---------------------------------- 1 file changed, 81 insertions(+), 192 deletions(-) diff --git a/buildsys.mk.in b/buildsys.mk.in index f4a1c92..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,8 +146,6 @@ 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} LDOBJS="${OBJS} ${OBJS_EXTRA}"; \ ${LINK_STATUS}; \ @@ -348,236 +325,148 @@ locales: ${MO_FILES} COMPILER="${CC}"; \ COMPILER_FLAGS="${CFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ ${COMPILE_STATUS}; \ - if $${COMPILER} $${COMPILER_FLAGS}; then \ - ${COMPILE_OK}; \ - else \ - ${COMPILE_FAILED}; \ - fi + $${COMPILER} $${COMPILER_FLAGS} + .c.lib.o: COMPILER="${CC}"; \ COMPILER_FLAGS="${LIB_CFLAGS} ${CFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ ${COMPILE_LIB_STATUS}; \ - if $${COMPILER} $${COMPILER_FLAGS}; then \ - ${COMPILE_LIB_OK}; \ - else \ - ${COMPILE_LIB_FAILED}; \ - fi + $${COMPILER} $${COMPILER_FLAGS} + .c.plugin.o: COMPILER="${CC}"; \ COMPILER_FLAGS="${PLUGIN_CFLAGS} ${CFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ ${COMPILE_PLUGIN_STATUS}; \ - if $${COMPILER} $${COMPILER_FLAGS}; then \ - ${COMPILE_PLUGIN_OK}; \ - else \ - ${COMPILE_PLUGIN_FAILED}; \ - fi + $${COMPILER} $${COMPILER_FLAGS} .cc.o .cxx.o: COMPILER="${CXX}"; \ COMPILER_FLAGS="${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ ${COMPILE_STATUS}; \ - if $${COMPILER} $${COMPILER_FLAGS}; then \ - ${COMPILE_OK}; \ - else \ - ${COMPILE_FAILED}; \ - fi + $${COMPILER} $${COMPILER_FLAGS} + .cc.lib.o .cxx.lib.o: COMPILER="${CXX}"; \ COMPILER_FLAGS="${LIB_CFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ ${COMPILE_LIB_STATUS}; \ - if $${COMPILER} $${COMPILER_FLAGS}; then \ - ${COMPILE_LIB_OK}; \ - else \ - ${COMPILE_LIB_FAILED}; \ - fi + $${COMPILER} $${COMPILER_FLAGS} + .cc.plugin.o .cxx.plugin.o: COMPILER="${CXX}"; \ COMPILER_FLAGS="${PLUGIN_CFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ ${COMPILE_PLUGIN_STATUS}; \ - if $${COMPILER} $${COMPILER_FLAGS}; then \ - ${COMPILE_PLUGIN_OK}; \ - else \ - ${COMPILE_PLUGIN_FAILED}; \ - fi + $${COMPILER} $${COMPILER_FLAGS} .d.o: COMPILER="${DC}"; \ ${COMPILE_STATUS}; \ if test x"$(basename ${COMPILER})" = x"dmd"; then \ - if $${COMPILER} ${DFLAGS} -c -of$@ $<; then \ - ${COMPILE_OK}; \ - else \ - ${COMPILE_FAILED}; \ - fi \ + $${COMPILER} ${DFLAGS} -c -of$@ $<; \ else \ - if $${COMPILER} ${DFLAGS} -c -o $@ $<; then \ - ${COMPILE_OK}; \ - else \ - ${COMPILE_FAILED}; \ - fi \ + $${COMPILER} ${DFLAGS} -c -o $@ $<; \ fi .erl.beam: COMPILER="${ERLC}"; \ COMPILER_FLAGS="${ERLCFLAGS} -o $@ $<"; \ ${COMPILE_STATUS}; \ - if $${COMPILER} $${COMPILER_FLAGS}; then \ - ${COMPILE_OK}; \ - else \ - ${COMPILE_FAILED}; \ - fi + $${COMPILER} $${COMPILER_FLAGS} .java.class: COMPILER="${JAVAC}"; \ COMPILER_FLAGS="${JAVACFLAGS} $<"; \ ${COMPILE_STATUS}; \ - if $${COMPILER} $${COMPILER_FLAGS} $<; then \ - ${COMPILE_OK}; \ - else \ - ${COMPILE_FAILED}; \ - fi + $${COMPILER} $${COMPILER_FLAGS} .m.o: COMPILER="${OBJC}"; \ COMPILER_FLAGS="${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ ${COMPILE_STATUS}; \ - if $${COMPILER} $${COMPILER_FLAGS}; then \ - ${COMPILE_OK}; \ - else \ - ${COMPILE_FAILED}; \ - fi + $${COMPILER} $${COMPILER_FLAGS} + .m.lib.o: COMPILER="${OBJC}"; \ COMPILER_FLAGS="${LIB_CFLAGS} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ ${COMPILE_LIB_STATUS}; \ - if $${COMPILER} $${COMPILER_FLAGS}; then \ - ${COMPILE_LIB_OK}; \ - else \ - ${COMPILE_LIB_FAILED}; \ - fi + $${COMPILER} $${COMPILER_FLAGS} + .m.plugin.o: COMPILER="${OBJC}"; \ COMPILER_FLAGS="${PLUGIN_CFLAGS} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ ${COMPILE_PLUGIN_STATUS}; \ - if $${COMPILER} $${COMPILER_FLAGS}; then \ - ${COMPILE_PLUGIN_OK}; \ - else \ - ${COMPILE_PLUGIN_FAILED}; \ - fi + $${COMPILER} $${COMPILER_FLAGS} .mm.o: COMPILER="${OBJCXX}"; \ COMPILER_FLAGS="${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ ${COMPILE_STATUS}; \ - if $${COMPILER} $${COMPILER_FLAGS}; then \ - ${COMPILE_OK}; \ - else \ - ${COMPILE_FAILED}; \ - fi + $${COMPILER} $${COMPILER_FLAGS} + .mm.lib.o: COMPILER="${OBJCXX}"; \ COMPILER_FLAGS="${LIB_CFLAGS} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ ${COMPILE_LIB_STATUS}; \ - if $${COMPILER} $${COMPILER_FLAGS}; then \ - ${COMPILE_LIB_OK}; \ - else \ - ${COMPILE_LIB_FAILED}; \ - fi + $${COMPILER} $${COMPILER_FLAGS} + .mm.plugin.o: COMPILER="${OBJCXX}"; \ COMPILER_FLAGS="${PLUGIN_CFLAGS} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ ${COMPILE_PLUGIN_STATUS}; \ - if $${COMPILER} $${COMPILER_FLAGS}; then \ - ${COMPILE_PLUGIN_OK}; \ - else \ - ${COMPILE_PLUGIN_FAILED}; \ - fi + $${COMPILER} $${COMPILER_FLAGS} .po.mo: COMPILER="${MSGFMT}"; \ COMPILER_FLAGS="-c -o $@ $<"; \ ${COMPILE_RESOURCE_STATUS}; \ - if $${COMPILER} $${COMPILER_FLAGS}; then \ - ${COMPILE_RESOURCE_OK}; \ - else \ - ${COMPILE_RESOURCE_FAILED}; \ - fi + $${COMPILER} $${COMPILER_FLAGS} .py.pyc: COMPILER="${PYTHON}"; \ COMPILER_FLAGS="${PYTHON_FLAGS}"; \ ${COMPILE_RESOURCE_STATUS}; \ - if $${COMPILER} $${COMPILER_FLAGS} -c "import py_compile; py_compile.compile('$<')"; then \ - ${COMPILE_RESOURCE_OK}; \ - else \ - ${COMPILE_RESOURCE_FAILED}; \ - fi + $${COMPILER} $${COMPILER_FLAGS} -c "import py_compile; py_compile.compile('$<')" .rc.o .rc.lib.o .rc.plugin.o: COMPILER="${WINDRES}"; \ COMPILER_FLAGS="${CPPFLAGS} -J rc -O coff -o $@ $<"; \ ${COMPILE_RESOURCE_STATUS}; \ - if $${COMPILER} $${COMPILER_FLAGS}; then \ - ${COMPILE_RESOURCE_OK}; \ - else \ - ${COMPILE_RESOURCE_FAILED}; \ - fi + $${COMPILER} $${COMPILER_FLAGS} .S.o: COMPILER="${AS}"; \ COMPILER_FLAGS="${ASFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ ${COMPILE_STATUS}; \ - if $${COMPILER} $${COMPILER_FLAGS}; then \ - ${COMPILE_OK}; \ - else \ - ${COMPILE_FAILED}; \ - fi + $${COMPILER} $${COMPILER_FLAGS} + .S.lib.o: COMPILER="${AS}"; \ COMPILER_FLAGS="${LIB_CFLAGS} ${ASFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ ${COMPILE_LIB_STATUS}; \ - if $${COMPILER} $${COMPILER_FLAGS}; then \ - ${COMPILE_LIB_OK}; \ - else \ - ${COMPILE_LIB_FAILED}; \ - fi + $${COMPILER} $${COMPILER_FLAGS} + .S.plugin.o: COMPILER="${AS}"; \ COMPILER_FLAGS="${PLUGIN_CFLAGS} ${ASFLAGS} ${CPPFLAGS} -c -o $@ $<"; \ ${COMPILE_PLUGIN_STATUS}; \ - if $${COMPILER} $${COMPILER_FLAGS}; then \ - ${COMPILE_PLUGIN_OK}; \ - else \ - ${COMPILE_PLUGIN_FAILED}; \ - fi + $${COMPILER} $${COMPILER_FLAGS} .xpm.o: COMPILER="${CC}"; \ COMPILER_FLAGS="${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<"; \ ${COMPILE_STATUS}; \ - if $${COMPILER} $${COMPILER_FLAGS}; then \ - ${COMPILE_OK}; \ - else \ - ${COMPILE_FAILED}; \ - fi + $${COMPILER} $${COMPILER_FLAGS} + .xpm.lib.o: COMPILER="${CC}"; \ COMPILER_FLAGS="${LIB_CFLAGS} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<"; \ ${COMPILE_LIB_STATUS}; \ - if $${COMPILER} $${COMPILER_FLAGS}; then \ - ${COMPILE_LIB_OK}; \ - else \ - ${COMPILE_LIB_FAILED}; \ - fi + $${COMPILER} $${COMPILER_FLAGS} + .xpm.plugin.o: COMPILER="${CC}"; \ COMPILER_FLAGS="${PLUGIN_CFLAGS} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<"; \ ${COMPILE_PLUGIN_STATUS}; \ - if $${COMPILER} $${COMPILER_FLAGS}; then \ - ${COMPILE_PLUGIN_OK}; \ - else \ - ${COMPILE_PLUGIN_FAILED}; \ - fi + $${COMPILER} $${COMPILER_FLAGS} install: ${SHARED_LIB} ${STATIC_LIB} ${STATIC_PIC_LIB} ${PLUGIN} ${PROG} install-extra for i in ${SUBDIRS}; do \ @@ -777,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}; \ @@ -789,38 +678,38 @@ distclean: clean ifndef V -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 -COMPILE_RESOURCE_STATUS = printf "@TERM_EL@@TERM_SETAF3@Compiling @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF3@ (resource)...@TERM_SGR0@\r" -COMPILE_RESOURCE_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully compiled @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF2@ (resource).@TERM_SGR0@\n" -COMPILE_RESOURCE_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to compile @TERM_BOLD@$<@TERM_SGR0@@TERM_SETAF1@ (resource)!@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 +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 = printf "DirectoryEnter: $$i\n"; cd $$i || exit $$? -DIR_LEAVE = printf "DirectoryLeave: $$i\n"; cd .. || exit $$? -DEPEND_STATUS = printf "GenerateDependencies\n" -DEPEND_OK = true +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 @@ -845,4 +734,4 @@ DELETE_FAILED = exit $$? endif -include .deps +-include ${DEPFILES} From 725b7ab6106d9c1216dd5c1cbe9626a1e31a8f4c Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Wed, 18 Apr 2012 21:59:49 +0000 Subject: [PATCH 3/5] Add README for this. --- README.md | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..90169f6 --- /dev/null +++ b/README.md @@ -0,0 +1,49 @@ +### 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." + +### 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. From 01064e427c66509e44ab73a08fb7d5f6ac44ff71 Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Wed, 18 Apr 2012 22:01:16 +0000 Subject: [PATCH 4/5] Note that there are actual performance gains to be had from using this. --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 90169f6..64893a1 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,10 @@ are: 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! From 30d130e877fed29df9d7361d24efe8408961dd29 Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Wed, 18 Apr 2012 22:04:51 +0000 Subject: [PATCH 5/5] This only works with gmake obviously. --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 64893a1..24b6cb1 100644 --- a/README.md +++ b/README.md @@ -51,3 +51,8 @@ Put your SUBDIRS before your include lines. You really are supposed to do this 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.