ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Donald <dona...@apache.org>
Subject Re: PATCH: Attributes of Target can reference properties
Date Tue, 03 Jul 2001 09:07:27 GMT
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               |
*-----------------------------------------------------*

Mime
View raw message