On Wed, 28 Feb 2001, Adam C Powell IV wrote: > > but it looks like what you need to do here > > is reference another makefile variable called MPI_HOME.
> Yup. > > The way to this is > > with the syntax $(MPI_HOME) -- note the parens in place of braces. I > > believe > > ${MPI_HOME} references a non-existent /environment/ variable. (Elsewhere > > the > > braces may indeed be correct, since you mention the use of multiple > > makefiles, > > but if you need to reference a Makefile variable set in the same file, you > > should normally use parentheses.) > I see. So something has changed recently in unstable such that braces don't > always work > any more? I usually use parentheses myself, but upstream has braces all over > the place- > I assumed they were interchangable (okay, so I'm a "make" newbie :-). > So why do braces work everywhere else in the makefile and all of the included > files? Why > do they fail in exactly the same place on every architecture? Do I need to > do a massive > global search and replace to switch braces to parentheses everywhere?? > I can't find anything relevant in the make info page either... The only comment I find in the info docs is To substitute a variable's value, write a dollar sign followed by the name of the variable in parentheses or braces: either `$(foo)' or `${foo}' is a valid reference to the variable `foo'. so I may have dreamed up the distinction between the two usages. I certainly got that impression /some/how, though... Upon rereading your makefile snippets, I get the impression this isn't actually the part of makefile that's being interpreted here. I see you have defined MPI_LIB = -L${MPI_HOME}/lib -L${MPI_HOME}/build/LINUX/ch_p4/lib -lmpich but the output of make includes Using libraries: -L/usr/home/hazelsct/petsc/petsc-2.0.29/lib/libO/linux_ppc -lpetscts -lpetscsnes -lpetscsles -lpetscdm -lpetscmat -lpetscvec -L/usr/home/hazelsct/petsc/petsc-2.0.29/lib/libO/linux_ppc -lpetsc -L{MPI_HOME}/build/LINUX/ch_p4/lib -lmpe -lpmpich -L/usr/X11R6/lib -lX11 -llapack -blas -L/usr/lib/mpich/lib -L/usr/lib/mpich/build/LINUX/ch_p4/lib -lmpich -ldl -lc -lg2c -lm ... and the correct value of MPI_LIB does appear towards the end of the library string, well past the point where -L{MPI_HOME} shows up. So I'm just on crack... pay no attention to anything I say. :) Steve Langasek postmodern programmer