Re: builddir vs. srcdir
Hello, On Sat, Mar 12, 2005 at 06:56:20PM +0200, Paul Pogonyshev wrote: Everything seems to work just fine and as expected, your code, which is in whole cited below, doesn't actually know about the dependency foo.c foo.h: foo.list So if you change the .list file, the other files won't be rebuilt. This might be a dangerous bug. It doesn't know about the dependency, but the files will be rebuilt as a ``side-effect'' of the timestamp rule. I actually just tried this out. In general, stamps are always dangerous, so it's good to avoid them if possible. I'd try something like this: [file `aux/list.make'] SUFFIXES = .list .list.c: Makefile $(PARSE_LIST_COMMAND) $(PARSE_LIST_BUILD_RULE) .list.h: Makefile $(PARSE_LIST_COMMAND) $(PARSE_LIST_BUILD_RULE) PARSE_LIST_BUILD_RULE = \ $(PARSE_LIST_COMMAND) $(PARSE_LIST_FLAGS) \ `test -f '$' || echo '$(srcdir)/'`$ $*.h $*.c \ touch $*.h [usage] LIST_FILES = foo.list bar.list # Prevent problems with parallel make: foo.h: foo.c bar.h: bar.c PARSE_LIST_COMMAND = ... PARSE_LIST_FLAGS = ... noinst_LIBRARIES = libfoo.a libfoo_a_SOURCES = ... $(LIST_FILES) # This hint is needed only for included files; *.c files # are handled by normal target dependencies: BUILT_SOURCES = $(LIST_FILES:.list=.h) MOSTLYCLEANFILES = $(LIST_FILES:.list=.h) $(LIST_FILES:.list=.c) include $(top_srcdir)/aux/list.make Sorry, but I'll stick with my setup. My parser depends on my lowest- level library (`libutils') and almost the whole build-tree depends on the generated files. So, when I touched my `libutils' in any way, I would get a full-blown rebuild of the project. That's why I used `cmp' and only replaced the `.[ch]' files with the newly generated if they differed. And so I need timestamps to avoid unecessary commands run all the time (I want to see ``nothing to be done...'' when it is the case.) Let me add some comments: 1) The maintainer of Automake said that $(LIST_FILES:.list=.h) is safe, and I trust him. Oh, great, that is what I was looking for! 2) nodist_libfoo_a_SOURCES was redundant, especially the .c files. Automake knows how to transform .list to .o, and listing the intermediate files again could cause problems. With your setup, yes. Not with mine, unfortunately. 3) I try to have the BUILT_SOURCES hist as small as possible, so when the .c file is a prerequisite of the corresponding .o, there is no need to pre-build it using BUILT_SOURCES. 4) With parallel make, the PARSE_LIST_COMMAND cnnot be run twice in parallel, because of the foo.c: foo.h dependency. So we are safe. I need to add this rule in my setup too. Anyway, even if I don't accept your advice this time, thank you for the help. :) Paul
Post-processing target?
Hello, Short version: How can I create a target or otherwise specify some post-processing script to run after a binary is built, so that it can be conditionally run on one platform but not another to create an additional file that is copied along with the main binary during installation? Long version: I am developing an app using Qt in Linux that I'd like to compile on various Linuxes and Mac OS X. It works fine with Qt's qmake program that generates Makefiles, but that route doesn't let me develop on Linux and compile on Linux and Max OS X, due to the way qmake works. I've reverse-engineered a Makefile.am based on the Makefile that qmake outputs that works on all my Linux targets. However, for the Mac OS X target, I need to do some extra stuff to make the infamous bundle. Basically I need to do some post-processing on the target after it's built to create the bundle directory, copy in a few files, and copy in the binary I just built. Then I'd like to have that bundle installed along with binary in the installation directory. My binary's name is scuba2. The bundle is a directory called scuba2.app with the target binary in it and some other magic files generated from templates. I start with a definition for scuba2.app which requires the additional target which are actually just chunks of script that do the right thing. Roughly, it looks like this: scuba2.app: bundle_file1 bundle_file2 bundle_binary bundle_file1: make bundle dir, use sed to make file from template in bundle dir bundle_file2: make bundle dir, use sed to make file from template in bundle dir bundle_binary: scuba2 make bundle dir, copy scuba2 into bundle dir I have an AM_CONDITIONAL in my configure to define a variable SCUBA_BUNDLE to be true on Macs. Where should I go from here? I've tried: if SCUBA_BUNDLE scuba2_DEPENDENCIES=scuba2.app endif But that just creates a circular dependency because scuba2.app requires scuba2, and I'm guessing that automake requires the _DEPENDENCIES before the main binary. I think I want something like: if SCUBA_BUNDLE scuba2_POST_PROCESSING=scuba2.app endif Any suggestions? I'm using automake 1.6.3 and autoconf 2.5.7 on Mac OS X 10.3. Thanks. -- Kevin Teich
Reminder: National Conference
Title: DiversityBusiness.com | 2004 Multicultural Business Conference Friendly Reminder: If you have not register for the upcoming conference you still have time to do so! If you only attend one conference a year you will not want to miss this opportunity to hear from the nation's leading experts on business and diversity. You will also have the chance to meet with the Top 50 corporations for diversity and the nation's leading diversity owned companies. DiversityBusiness.cominvites you to attend the Fifth National Multicultural Business Conference taking place on March 30- April 1, 2005 at the beautiful Foxwoods Resort Casino located in Mashantucket, CT. Come and share your business ideas with other DiversityBusiness.com members and Fortune 500 companies.The conference offers Education, Training and Networking for: Chief Diversity Officers Supplier Diversity Executives Women Entrepreneurs Purchasing, Marketing and Human Resource Executives Minority and Small Business Entrepreneurs Government Decision-makers Financial Services Professionals Diversity Professionals To register or for more event information logon to: www.diversitybusiness.com/conference Featured Speakers include: Jane Applegate America's leading expert on the entrepreneurial market Miriam MuleyDirector Diversity Marketing Sales, General Motors Multicultural Markets and Their Impact on Corporate Revenue Dr.Sondra Thiederman One of the nation's leading experts on workplace diversity and cross-cultural business Chin-Ning Chu The New Renaissance Woman Gerri Mason HallVice President, Diversity Business Strategy - AmtraK Marilyn D. JohnsonVice President Market Development - IBM Michelle Johnson Director Supplier Diversity, The Home Depot Robert McCormes-BallouDirector, Vendor Diversity, Office Depot Julia HubbelThe Art of Business Networking Durie WhiteOperations Director, Office of Small and Disadvantaged Business Utilization, U.S. Department of State Ralph ThomasAssociate Administrator - NASA Anthony (Tony) BellDepartment of Homeland Security Jonah Cooper, Jr.Director of Business and Resource Development, Rutgers University Kenton Clarke President CEODiversityBusiness.com Over 1,000 attendee's are expected including over 100 Fortune 500 companies already confirmed. Seating is limited so please confirm your attendance as early as possible. To register or for more event information logon to: www.diversitybusiness.com/conference I look forward to seeing you. Sincerely,Kenton Clarke President CEOwww.DiversityBusiness.com To be removed from this mailing list Click Here
automake-1.9.5
Hi! I've been trying to compile automake on my computer. 507 tests failed... Attached is the script I run to configure: configure-vu. output of configure is in configure.out output of make is in make.out output of make check is in make-check.out uname -a: SunOS flits 5.9 Generic_112233-11 sun4u sparc SUNW,Sun-Fire-V440 Tnx, Tom www.few.vu.nl/~tvburger/build/ #!/bin/sh PATH=/opt/gnu/grep-2.5.1a/bin:/opt/gnu/autoconf-2.59/bin:/usr/ccs/bin:/usr/bin:/usr/local/bin CC='/opt/gnu/gcc-3.4.3/bin/gcc -O2 -mcpu=v9' export PATH CC ./configure \ --prefix=/opt/gnu/automake-1.9.5 checking build system type... sparc-sun-solaris2.9 checking for a BSD-compatible install... lib/install-sh -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking for perl... /usr/bin/perl checking for tex... tex checking whether autoconf is installed... yes checking whether autoconf works... yes checking whether autoconf is recent enough... yes checking whether ln works... yes checking for grep that handles long lines and -e... /opt/gnu/grep-2.5.1a/bin/grep checking for egrep... /opt/gnu/grep-2.5.1a/bin/grep -E checking for fgrep... /opt/gnu/grep-2.5.1a/bin/grep -F configure: creating ./config.status config.status: creating Makefile config.status: creating doc/Makefile config.status: creating lib/Automake/Makefile config.status: creating lib/Automake/tests/Makefile config.status: creating lib/Makefile config.status: creating lib/am/Makefile config.status: creating m4/Makefile config.status: creating tests/Makefile config.status: creating tests/defs config.status: creating tests/aclocal-1.9 config.status: creating tests/automake-1.9 Making check in . make[1]: Entering directory `/net/build.sparc/gnu/automake-1.9.5' make[1]: Nothing to be done for `check-am'. make[1]: Leaving directory `/net/build.sparc/gnu/automake-1.9.5' Making check in doc make[1]: Entering directory `/net/build.sparc/gnu/automake-1.9.5/doc' make[1]: Nothing to be done for `check'. make[1]: Leaving directory `/net/build.sparc/gnu/automake-1.9.5/doc' Making check in m4 make[1]: Entering directory `/net/build.sparc/gnu/automake-1.9.5/m4' make[1]: Nothing to be done for `check'. make[1]: Leaving directory `/net/build.sparc/gnu/automake-1.9.5/m4' Making check in lib make[1]: Entering directory `/net/build.sparc/gnu/automake-1.9.5/lib' Making check in Automake make[2]: Entering directory `/net/build.sparc/gnu/automake-1.9.5/lib/Automake' Making check in tests make[3]: Entering directory `/net/build.sparc/gnu/automake-1.9.5/lib/Automake/tests' /opt/gnu/make-3.80/bin/make check-TESTS make[4]: Entering directory `/net/build.sparc/gnu/automake-1.9.5/lib/Automake/tests' PASS: Condition.pl PASS: DisjConditions.pl PASS: Version.pl PASS: Wrap.pl == All 4 tests passed == make[4]: Leaving directory `/net/build.sparc/gnu/automake-1.9.5/lib/Automake/tests' make[3]: Leaving directory `/net/build.sparc/gnu/automake-1.9.5/lib/Automake/tests' make[3]: Entering directory `/net/build.sparc/gnu/automake-1.9.5/lib/Automake' make[3]: Nothing to be done for `check-am'. make[3]: Leaving directory `/net/build.sparc/gnu/automake-1.9.5/lib/Automake' make[2]: Leaving directory `/net/build.sparc/gnu/automake-1.9.5/lib/Automake' Making check in am make[2]: Entering directory `/net/build.sparc/gnu/automake-1.9.5/lib/am' make[2]: Nothing to be done for `check'. make[2]: Leaving directory `/net/build.sparc/gnu/automake-1.9.5/lib/am' make[2]: Entering directory `/net/build.sparc/gnu/automake-1.9.5/lib' make[2]: Nothing to be done for `check-am'. make[2]: Leaving directory `/net/build.sparc/gnu/automake-1.9.5/lib' make[1]: Leaving directory `/net/build.sparc/gnu/automake-1.9.5/lib' Making check in tests make[1]: Entering directory `/net/build.sparc/gnu/automake-1.9.5/tests' /opt/gnu/make-3.80/bin/make defs aclocal-1.9 automake-1.9 make[2]: Entering directory `/net/build.sparc/gnu/automake-1.9.5/tests' make[2]: `defs' is up to date. make[2]: `aclocal-1.9' is up to date. make[2]: `automake-1.9' is up to date. make[2]: Leaving directory `/net/build.sparc/gnu/automake-1.9.5/tests' /opt/gnu/make-3.80/bin/make check-TESTS make[2]: Entering directory `/net/build.sparc/gnu/automake-1.9.5/tests' FAIL: aclibobj.test FAIL: aclocal.test PASS: aclocal3.test FAIL: aclocal4.test FAIL: aclocal5.test FAIL: aclocal6.test FAIL: aclocal7.test FAIL: aclocal8.test FAIL: aclocal9.test FAIL: acloca10.test FAIL: acloca11.test FAIL: acloca12.test FAIL: acloca13.test FAIL: acloca14.test FAIL: acloca15.test FAIL: acloca16.test FAIL: acloca17.test FAIL: acoutnoq.test FAIL: acoutpt.test FAIL: acoutpt2.test FAIL: acoutqnl.test FAIL: acoutbs.test FAIL: acsilent.test FAIL: acsubst.test FAIL: acsubst2.test FAIL: all.test FAIL: alloca.test FAIL: alloca2.test FAIL: alpha.test FAIL: alpha2.test FAIL: amassign.test PASS: ammissing.test FAIL: ansi.test FAIL: ansi2.test FAIL: ansi3.test FAIL: ansi3b.test FAIL: ansi4.test FAIL: