Brian wrote: > I am in the planning stages of autoconfiscating a large project. The project > will have a top-level makefile.am <http://makefile.am> and then several
Did you expect that to be a http web link? > subdirectories which each generate an executeable and have a > makefile.am<http://makefile.am>. Every directory will have a Makefile.am file and a recursive make will be performed. Okay. Sounds fine. That is all normal. > A specific feature I have been asked for is the ability to jump into any of > the given subdirectories and run only that makfile, compiling only that > program. That is a normal feature of automake generated Makefiles. Only that directory will be made. However if that directory depends upon another directory such as a library then that other directory will need to be made first. A top level make will traverse all directories. But what you are talking about there is just edit, make, edit, make, in a single directory and that is all standard and works fine. It is also possible to optionally configure automake to create only a top level Makefile. But that does not sound like what you want. It is optional, so just don't do it. > Additionally, at configure time an option such as --enable-debug > should be available, and if set, should create an additional debug version > of each subdirectory using the same source files (with optionally different > flags to custom programs) and leave the intermediate object files > behind. That can probably be done and someone will suggest a way to do it. But normally if that is what you want then you would use separate build directories. While in your top level project directory: mkdir ../project-optimized cd ../project-optimized ../project/configure CFLAGS=-O mkdir ../project-debug cd ../project-debug ../project/configure CFLAGS=-g mkdir ../project-profile cd ../project-profile ../project/configure CFLAGS=-p This will build three different copies of your project, each with the build flags you gave it. > In some sample tests where the only source file was main.c and > bin_PROGRAMS = hello helloDebug, I was left with only one main.o. Of > course I couldn't have two, but there was no "autorenaming" so to > speak. By building in separate directories as in the above there is no need to rename because the programs are built in different directories. > To recap: > > - Optionally make subdirectories individually Normal for recursive make configurations. > - Optionally keep separate intermediate files of simultaneous regular > and debug builds Build in separate directories. > - Pass flags from configure all the way to individual debug > builds (I know how to enable the flags, just now how to make sure > they make it all the way down) When passed to configure those flags will be configured into all of the Makefiles below. To change flags you configure with different flags. This is the output of AC_CONFIG_FILES and AC_OUTPUT. Bob