On Fri, 2005-12-09 at 22:45 +0100, Baurzhan Ismagulov wrote: > Hello Brendan, > > On Fri, Dec 09, 2005 at 04:18:10PM -0500, Jacobs, Brendan D. wrote: > > We'd like to be able to do "make test" and > > "make release", and have automake just make the make release libraries > > and programs versus using test programs, respectively. Is there any > > support for user-specified targets? Or, can you recommend another way > > to accomplish this w/ the current 1.92 version of automake? > > It depends on the difference between test and release. For us, it is > compiler and configure options. I usually "./configure CFLAGS=-O0". For > test, I "make". For release, I could "make CFLAGS=-O2 prefix=/usr > sysconfdir=/etc localstatedir=/var" (although I don't, since the release > is for another architecture and is packaged). If this suits your needs, > you could add something like the following to your Makefile.am: > > release: > $(MAKE) CFLAGS=-O2 prefix=/usr sysconfdir=/etc localstatedir=/var You are miss interpreting automake's tasks. Packaging is not of automake's business.
Your approach isn't much more but a short-cut to your personal and local practice and setup. It is wrong and therefore inapplicable almost anywhere else. I.e. makefiles are not the appropriate place to implement this. Writing a local shell script or encapsulating this into the config files of the packaging system you are using (e.g. rpm.specs) would be the appropriate approach. > > By the way, beside release builds, we're after a decrease in build time. > > We'd really like the "make release" to shorten our build time by only > > building the non-test directories. Same as above. It depends on what you consider to be a "release". Packaging binaries is not of automake's business, it's your task. To conditionally not compile/execute parts of your package, you normally compile/execute as part of your development process, you could implement a --enable-* (e.g. --enable-tests) configuration option and set up corresponding AM_CONDITIONALS in your Makefile.ams. This way, for ordinary users, which don't want to perform the tests, "make all" would not execute your tests. Ralf