----- Original Message -----
From: "Akim Demaille" <[EMAIL PROTECTED]>
To: "Robert Collins" <[EMAIL PROTECTED]>
Subject: Re: make dist and BUILT_SOURCES
> >>>>> "Robert" == Robert Collins <[EMAIL PROTECTED]>
writes:
>
> Robert> Yet another question from the newbie. I have a number of
> Robert> built source (.h and .c) files that are built from other
> Robert> sources/configure settings.
>
> Such as?
I've included an excerpt. The entire Makefile.am is rather long as it
has a lot of ##'d old stuff as I convert it over bit by bit.
===
EXTRA_squid_SOURCES = delay_pools.c dns.c dnsserver.c dns_internal.c
htcp.c \
leakfinder.c snmp_core.c snmp_agent.c unlinkd.c
squid_SOURCES = \
access_log.c acl.c asn.c auth_modules.c authenticate.c cache_cf.c
cf_parser.h \
...
string_arrays.c tools.c $(UNLINKDSOURCE) url.c urn.c useragent.c wais.c
\
wccp.c whois.c
squid_LDADD = @XTRA_OBJS@ @REPL_OBJS@ @STORE_OBJS@ @AUTH_OBJS@ \
@CRYPTLIB@ @REGEXLIB@ @SQUID_PTHREAD_LIB@ \
@SNMPLIB@ @LIB_MALLOC@ ../lib/libmiscutil.a @XTRA_LIBS@
## all of these appear in squid_SOURCES
BUILT_SOURCES = cf_gen_defines.h cf_parser.h globals.c string_arrays.c \
repl_modules.c auth_modules.c store_modules.c
cf_gen_defines.h: $(srcdir)/cf_gen_defines $(srcdir)/cf.data.pre
awk -f $(srcdir)/cf_gen_defines <$(srcdir)/cf.data.pre
>$(srcdir)/cf_gen_defines.h
auth_modules.c: auth_modules.sh
@$(SHELL) $(srcdir)/auth_modules.sh $(AUTH_MODULES)
>auth_modules.c
repl_modules.c: repl_modules.sh
$(SHELL) $(srcdir)/repl_modules.sh $(REPL_POLICIES) >
repl_modules.c
store_modules.c: store_modules.sh
$(SHELL) $(srcdir)/store_modules.sh $(STORE_MODULES)
>store_modules.c
...
===
make dist fails to find any of the BUILT_SOURCES unless they are built
into $(srcdir) like cf_gen_defines.h is.
>
> Robert> "make dist" is failing to find these files. (Some of them
> Robert> shouldn't be included in the distribution, and some can be).
>
> Robert> is there some way to exclude specific built sources from the
> Robert> disrtribution?
>
> Automake will always ship parsers and scanners, but I don't believe it
> ships all the BUILT_SOURCES.
included here is the output of make dist
====
administrator@LIFELESSWKS /usr/src/ambuild
$ make dist
chmod -R a+w ./squid-2.5-DEVEL >/dev/null 2>&1; rm -rf ./squid-2.5-DEVEL
mkdir ./squid-2.5-DEVEL
/bin/sh ../squid-amake/mkinstalldirs ./squid-2.5-DEVEL/./include
./squid-2.5-DEVEL/contrib
./squid-2.5-DEVEL/include ./squid-2.5-DEVEL/scripts
./squid-2.5-DEVEL/src/auth ./squid-2.
5-DEVEL/src/auth/basic ./squid-2.5-DEVEL/src/auth/basic/helpers
./squid-2.5-DEVEL/src/auth
/basic/helpers/LDAP ./squid-2.5-DEVEL/src/auth/basic/helpers/MSNT
./squid-2.5-DEVEL/src/au
th/basic/helpers/NCSA ./squid-2.5-DEVEL/src/auth/basic/helpers/PAM
./squid-2.5-DEVEL/src/a
uth/basic/helpers/SMB ./squid-2.5-DEVEL/src/auth/basic/helpers/YP
./squid-2.5-DEVEL/src/au
th/basic/helpers/getpwnam
./squid-2.5-DEVEL/src/auth/basic/helpers/multi-domain-NTLM ./squ
id-2.5-DEVEL/src/auth/digest ./squid-2.5-DEVEL/src/auth/digest/helpers
./squid-2.5-DEVEL/s
rc/auth/digest/helpers/password ./squid-2.5-DEVEL/src/auth/ntlm
./squid-2.5-DEVEL/src/auth
/ntlm/helpers ./squid-2.5-DEVEL/src/auth/ntlm/helpers/NTLMSSP
./squid-2.5-DEVEL/src/auth/n
tlm/helpers/fakeauth ./squid-2.5-DEVEL/src/auth/ntlm/helpers/no_check
mkdir ./squid-2.5-DEVEL/./include
mkdir ./squid-2.5-DEVEL/contrib
mkdir ./squid-2.5-DEVEL/scripts
mkdir ./squid-2.5-DEVEL/src
mkdir ./squid-2.5-DEVEL/src/auth
mkdir ./squid-2.5-DEVEL/src/auth/basic
mkdir ./squid-2.5-DEVEL/src/auth/basic/helpers
mkdir ./squid-2.5-DEVEL/src/auth/basic/helpers/LDAP
mkdir ./squid-2.5-DEVEL/src/auth/basic/helpers/MSNT
mkdir ./squid-2.5-DEVEL/src/auth/basic/helpers/NCSA
mkdir ./squid-2.5-DEVEL/src/auth/basic/helpers/PAM
mkdir ./squid-2.5-DEVEL/src/auth/basic/helpers/SMB
mkdir ./squid-2.5-DEVEL/src/auth/basic/helpers/YP
mkdir ./squid-2.5-DEVEL/src/auth/basic/helpers/getpwnam
mkdir ./squid-2.5-DEVEL/src/auth/basic/helpers/multi-domain-NTLM
mkdir ./squid-2.5-DEVEL/src/auth/digest
mkdir ./squid-2.5-DEVEL/src/auth/digest/helpers
mkdir ./squid-2.5-DEVEL/src/auth/digest/helpers/password
mkdir ./squid-2.5-DEVEL/src/auth/ntlm
mkdir ./squid-2.5-DEVEL/src/auth/ntlm/helpers
mkdir ./squid-2.5-DEVEL/src/auth/ntlm/helpers/NTLMSSP
mkdir ./squid-2.5-DEVEL/src/auth/ntlm/helpers/fakeauth
mkdir ./squid-2.5-DEVEL/src/auth/ntlm/helpers/no_check
for subdir in lib snmplib scripts src icons errors; do \
if test "$subdir" = .; then :; else \
test -d ./squid-2.5-DEVEL/$subdir \
|| mkdir ./squid-2.5-DEVEL/$subdir \
|| exit 1; \
(cd $subdir && \
make \
top_distdir="." \
distdir=.././squid-2.5-DEVEL/$subdir \
distdir) \
|| exit 1; \
fi; \
done
make[1]: Entering directory `/usr/src/ambuild/lib'
make[1]: Leaving directory `/usr/src/ambuild/lib'
make[1]: Entering directory `/usr/src/ambuild/snmplib'
make[1]: Leaving directory `/usr/src/ambuild/snmplib'
make[1]: Entering directory `/usr/src/ambuild/scripts'
make[1]: Leaving directory `/usr/src/ambuild/scripts'
make[1]: Entering directory `/usr/src/ambuild/src'
cp: ../../squid-amake/src/auth_modules.c: No such file or directory
make[1]: *** [distdir] Error 1
make[1]: Leaving directory `/usr/src/ambuild/src'
make: *** [distdir] Error 1
===
>
> Robert> Some examples: store_modules.c is a stub that initialises each
> Robert> of the fs modules. It's created via shell script based on the
> Robert> configure parameters. It should never exist in the src dir,
> Robert> only in the build dir. cf_gen_defines.h is generated from the
> Robert> configuration file sources, and is used by the parser. It can
> Robert> exist in the srcdir or build dir (through historically it was
> Robert> built in the build dir).
>
> Robert> So for cf_gen_defines.h and similar fiels I can make them be
> Robert> built into the src dir, and then make dist finds them. That
> Robert> still leaves me with files that should only be built in the
> Robert> build dir and not distributed.
>
> Rob, seeing Makefile.am might help us.
>
If you want the full file (lots of cruft) I'm happy to mail it.
Rob