%% Regarding problems with directory in make; you wrote: jj> I'm having problems with my makefile. I want to descend into a jj> directory and issue shell commands to extract a list of files jj> using either `ls` or `echo` and store in a variable.
jj> Here is the command: jj> install: jj> cd LINUX/mod; mod2=$(shell echo *) This can't work: you're confusing what is run by the shell with what is run by make. A command script is handled as follows: 1) Make expands all variables and functions within the command script. 2) Make takes the resulting string and invokes a shell with that string as the commands to run. 3) Make waits until the shell exits and checks the exit code; if it succeeds (exits with a 0 exit code) then make proceeds with the next command. If it fails (exits with a non-0 exit code) then make stops. I'm obviously ignoring special cases such as -i etc. In your command, make runs the $(shell echo *) before it invokes the shell (as part of step 1); since this is before the shell started the cd command has not been done yet. Also, you haven't quoted the results and shell variables are only set to the first word. This would work: install: cd LINUX/mod; mod2=`echo *` jj> I would like to descend to LINUX/mod directory from current jj> directory, echo the filenames and store in variable mod2 for later jj> use. If by "later use" you mean within the same command line, that's fine. If you mean anything else, you can't do that. As above, you are setting a _shell_ variable because it's the shell that's running the command. Once that command is over and the shell exits, any shell variables you set within the command are gone. jj> install: jj> mod2=$(shell `ls LINUX/mod`) jj> In this case `ls` gives the right list of filenames but shell jj> attempts to execute the filenames as if it were commands. jj> install: jj> mod2=$(`cd LINUX/mod`; $(shell echo *)) jj> mod2=$(`cd LINUX/mod`; `echo *`) jj> mod2=$(`echo LINUX/mod/*`) jj> These don't work at all. You're totally confused if you think any of these could possibly work. Please either get a book on make, or read the very good GNU make user's manual that comes with GNU make. You're missing the basic concepts. -- ------------------------------------------------------------------------------- Paul D. Smith <[EMAIL PROTECTED]> Find some GNU make tips at: http://www.gnu.org http://make.paulandlesley.org "Please remain calm...I may be mad, but I am a professional." --Mad Scientist _______________________________________________ Bug-make mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/bug-make