On Tue, 3 Jul 2001 18:23, Peter Vogel wrote: > There are times this is *appropriate* and correct in a build system. > > Peter D -- I'm just curious, how much build infrastructure architecting > have you done in your career? Did you just have a seriously > bad gnumake trip instigated by someone (ab)using make without > knowing what they were doing? > > I mean, even in my current contract, where the system to be built is > pretty small, (50K lines of Java, but very young) but highly partitioned > into several groups of responsibility, I've needed to patch ant for this > sort of feature and hack around the lack of a foreach and an if. (I also > worked with our deployment guy to implement a series of tasks to facilitate > the production of Solaris packages which could probably be extended to > build other forms of package, i.e. RPM).
I like (GNU)make and have only seen a few horrendous make setups. I agree with what your saying that it is better to hide complexity and allow "build engineers" to handle it. Consequently a makefile snippet I have shown multiple times on this list is below. I am sure you will agree that it is close to ideal setup for multiple products in a workspace. All the complexity is hidden in rules.mk, system specific configurations are in a config.mk etc and this was data.mk and easily accessible by mere mortals. I just don't see that as a goal of ant. Ant is a different beast, two of the basic principles were extensibility and simplicity. If you want to make possible generic rules then that is fine but it is not Ant. Ant2 will allow you to customize to your hearts desire by simply dropping a jar in place. So if you still believe the stuff you say and are willing to walk the walk rather than talking the talk then you can do it. ########################################################################### # Cross Platform library ########################################################################### XP.NAME = xp XP.DESCRIPTION = Cross Platform Services XP.DEPEND = XP.DEFINES = -DXPAPI=EXPORT XP.SRC = $(wildcard $(SRCDIR)/sys/$(OS)/xp*.cpp ) XP.LIB.EXTRA = $(LIB.XPSHLIB) ########################################################################### # Standard Debugging library ########################################################################### STDDBG.NAME = stddbg STDDBG.DESCRIPTION = Standard Debugging library STDDBG.DEPEND = $(XP.NAME) STDDBG.DEFINES = -DDBGAPI=EXPORT STDDBG.SRC = $(wildcard $(SRCDIR)/dbg/*.cpp ) ########################################################################### # Shared Class Facility (based on ideas/code conventions in CS project) ########################################################################### SCF.NAME = scf SCF.DESCRIPTION = Shared Class Facility SCF.DEPEND = $(XP.NAME) $(STDDBG.NAME) SCF.DEFINES = -DSCFAPI=EXPORT SCF.SRC = $(wildcard $(SRCDIR)/scf/scf.cpp ) ########################################################################### # CJ to the librarys and applications ########################################################################### CJ.NAME = cj CJ.DESCRIPTION = CJ to libraries and utilities CJ.DEFINES = -DCJAPI=EXPORT CJ.DEPEND = $(SCF.NAME) $(STDDBG.NAME) CJ.INCLUDE.EXTRA = $(INCLUDEDIRS.JAVA) CJ.SRC = $(wildcard $(SRCDIR)/cj/*.cpp $(SRCDIR)/cj/*/*.cpp ) CJ.H = $(subst .cpp,.h,$(subst $(SRCDIR),$(INCLUDEDIR),$(wildcard $(SRCDIR)/cj/avalon_cj_*.cpp) ) ) ########################################################################### # Rendering library ########################################################################### REND.NAME = rend REND.DESCRIPTION = Rendering library REND.DEPEND = $(SCF.NAME) $(STDDBG.NAME) REND.SRC = $(wildcard $(SRCDIR)/engine/renderer/opengl/*.cpp $(SRCDIR)/engine/renderer/opengl/glx/*.cpp ) REND.DEFINES = -DRENDAPI=EXPORT REND.LIB.EXTRA = GL GLU REND.LIB.PATH.EXTRA = /usr/X11R6/lib/ Cheers, Pete *-----------------------------------------------------* | "Faced with the choice between changing one's mind, | | and proving that there is no need to do so - almost | | everyone gets busy on the proof." | | - John Kenneth Galbraith | *-----------------------------------------------------*
