Make concurrent builds work.

To stop the errors when building concurrently, we make a number of
changes:

        1.  stop including generated files in *_SOURCES,

        2.  make *-protos.h and *-private.h depend on the *_SOURCES,

        3.  make all objects depend on *-{protos,private}.h,

        4.  in a few places change dir/header.h to $(srcdir)/dir/header.h,

This appears to work for me with make -j16 on a 4-way box.
This commit is contained in:
Roland C. Dowdeswell
2012-08-08 00:04:04 +01:00
parent d9d8e94d66
commit be5afdbf7f
10 changed files with 102 additions and 45 deletions

View File

@@ -12,7 +12,6 @@ login_SOURCES = \
login.c \
login_access.c \
login_locl.h \
login-protos.h \
loginpaths.h \
limits_conf.c \
osfc2.c \
@@ -32,7 +31,7 @@ LDADD = $(LIB_otp) \
$(LIB_security) \
$(DBLIB)
$(srcdir)/login-protos.h:
$(srcdir)/login-protos.h: $(login_SOURCES)
cd $(srcdir); perl ../../cf/make-proto.pl -o login-protos.h -q -P comment $(login_SOURCES) || rm -f login-protos.h
$(login_OBJECTS): $(srcdir)/login-protos.h

View File

@@ -17,14 +17,13 @@ kcm_SOURCES = \
glue.c \
headers.h \
kcm_locl.h \
kcm-protos.h \
log.c \
main.c \
protocol.c \
sessions.c \
renew.c
$(srcdir)/kcm-protos.h:
$(srcdir)/kcm-protos.h: $(kcm_SOURCES)
cd $(srcdir); perl ../cf/make-proto.pl -o kcm-protos.h -q -P comment $(kcm_SOURCES) || rm -f kcm-protos.h
$(kcm_OBJECTS): $(srcdir)/kcm-protos.h

View File

@@ -36,8 +36,6 @@ kdc_tester_SOURCES = \
kdc-tester.c
libkdc_la_SOURCES = \
kdc-private.h \
kdc-protos.h \
default_config.c \
set_dbinfo.c \
digest.c \
@@ -53,8 +51,19 @@ libkdc_la_SOURCES = \
windc.c \
rx.h
KDC_PROTOS = $(srcdir)/kdc-protos.h $(srcdir)/kdc-private.h
$(libkdc_la_OBJECTS): $(srcdir)/kdc-protos.h $(srcdir)/kdc-private.h
ALL_OBJECTS = $(kdc_OBJECTS)
ALL_OBJECTS += $(kdc_replay_OBJECTS)
ALL_OBJECTS += $(kdc_tester_OBJECTS)
ALL_OBJECTS += $(libkdc_la_OBJECTS)
ALL_OBJECTS += $(string_to_key_OBJECTS)
ALL_OBJECTS += $(kstash_OBJECTS)
ALL_OBJECTS += $(hprop_OBJECTS)
ALL_OBJECTS += $(hpropd_OBJECTS)
ALL_OBJECTS += $(digest_service_OBJECTS)
$(ALL_OBJECTS): $(KDC_PROTOS)
libkdc_la_LDFLAGS = -version-info 2:0:0
@@ -63,10 +72,10 @@ libkdc_la_LDFLAGS += $(LDFLAGS_VERSION_SCRIPT)$(srcdir)/version-script.map
endif
$(libkdc_la_OBJECTS): $(srcdir)/version-script.map
$(srcdir)/kdc-protos.h:
$(srcdir)/kdc-protos.h: $(libkdc_la_SOURCES)
cd $(srcdir) && perl ../cf/make-proto.pl -q -P comment -o kdc-protos.h $(libkdc_la_SOURCES) || rm -f kdc-protos.h
$(srcdir)/kdc-private.h:
$(srcdir)/kdc-private.h: $(libkdc_la_SOURCES)
cd $(srcdir) && perl ../cf/make-proto.pl -q -P comment -p kdc-private.h $(libkdc_la_SOURCES) || rm -f kdc-private.h
@@ -125,7 +134,7 @@ digest_service_LDADD = \
kdc_replay_LDADD = libkdc.la $(LDADD) $(LIB_pidfile)
kdc_tester_LDADD = libkdc.la $(LDADD) $(LIB_pidfile) $(LIB_heimbase)
include_HEADERS = kdc.h kdc-protos.h
include_HEADERS = kdc.h $(srcdir)/kdc-protos.h
krb5dir = $(includedir)/krb5

View File

@@ -152,7 +152,8 @@ CLEANFILES = \
test_template_asn1_files test_template_asn1*.h* \
test_asn1_files test_asn1*.h*
dist_include_HEADERS = der.h heim_asn1.h der-protos.h der-private.h
dist_include_HEADERS = der.h heim_asn1.h
dist_include_HEADERS += $(srcdir)/der-protos.h $(srcdir)/der-private.h
dist_include_HEADERS += asn1-common.h
nodist_include_HEADERS = asn1_err.h
@@ -180,9 +181,8 @@ priv_headers += test_asn1.h test_asn1-priv.h
$(asn1_compile_OBJECTS): asn1parse.h asn1parse.c $(srcdir)/der-protos.h $(srcdir)/der-private.h
$(libasn1_la_OBJECTS): $(nodist_include_HEADERS) $(priv_headers) asn1_err.h $(srcdir)/der-protos.h $(srcdir)/der-private.h
$(libasn1base_la_OBJECTS): asn1_err.h $(srcdir)/der-protos.h $(srcdir)/der-private.h
$(asn1_compile_OBJECTS): asn1parse.h asn1parse.c
$(libasn1_la_OBJECTS): $(nodist_include_HEADERS) $(priv_headers)
$(check_gen_OBJECTS): test_asn1.h
$(check_template_OBJECTS): test_template_asn1.h test_template_asn1-priv.h test_template_asn1_files
$(asn1_print_OBJECTS): krb5_asn1.h
@@ -257,8 +257,19 @@ EXTRA_DIST = \
test.gen \
version-script.map
$(srcdir)/der-protos.h:
DER_PROTOS = $(srcdir)/der-protos.h $(srcdir)/der-private.h
ALL_OBJECTS = $(libasn1_la_OBJECTS)
ALL_OBJECTS += $(libasn1base_la_OBJECTS)
ALL_OBJECTS += $(asn1_print_OBJECTS)
ALL_OBJECTS += $(asn1_compile_OBJECTS)
ALL_OBJECTS += $(asn1_gen_OBJECTS)
ALL_OBJECTS += $(check_template_OBJECTS)
$(ALL_OBJECTS): $(DER_PROTOS) asn1_err.h
$(srcdir)/der-protos.h: $(dist_libasn1base_la_SOURCES)
cd $(srcdir) && perl ../../cf/make-proto.pl -q -P comment -o der-protos.h $(dist_libasn1base_la_SOURCES) || rm -f der-protos.h
$(srcdir)/der-private.h:
$(srcdir)/der-private.h: $(dist_libasn1base_la_SOURCES)
cd $(srcdir) && perl ../../cf/make-proto.pl -q -P comment -p der-private.h $(dist_libasn1base_la_SOURCES) || rm -f der-private.h

View File

@@ -45,7 +45,7 @@ krb5src = \
krb5/external.c \
krb5/get_mic.c \
krb5/gsskrb5_locl.h \
krb5/gsskrb5-private.h \
$(srcdir)/krb5/gsskrb5-private.h \
krb5/import_name.c \
krb5/import_sec_context.c \
krb5/indicate_mechs.c \
@@ -164,7 +164,7 @@ spnegosrc = \
spnego/external.c \
spnego/init_sec_context.c \
spnego/spnego_locl.h \
spnego/spnego-private.h
$(srcdir)/spnego/spnego-private.h
ntlmsrc = \
ntlm/accept_sec_context.c \
@@ -183,7 +183,6 @@ ntlmsrc = \
ntlm/export_sec_context.c \
ntlm/external.c \
ntlm/ntlm.h \
ntlm/ntlm-private.h \
ntlm/import_name.c \
ntlm/import_sec_context.c \
ntlm/indicate_mechs.c \
@@ -199,7 +198,7 @@ ntlmsrc = \
ntlm/release_name.c \
ntlm/kdc.c
$(srcdir)/ntlm/ntlm-private.h:
$(srcdir)/ntlm/ntlm-private.h: $(ntlmsrc)
cd $(srcdir) && perl ../../cf/make-proto.pl -q -P comment -p ntlm/ntlm-private.h $(ntlmsrc) || rm -f ntlm/ntlm-private.h
dist_libgssapi_la_SOURCES = \
@@ -234,9 +233,9 @@ man_MANS = gssapi.3 gss_acquire_cred.3 mech/mech.5
include_HEADERS = gssapi.h
noinst_HEADERS = \
gssapi_mech.h \
ntlm/ntlm-private.h \
spnego/spnego-private.h \
krb5/gsskrb5-private.h
$(srcdir)/ntlm/ntlm-private.h \
$(srcdir)/spnego/spnego-private.h \
$(srcdir)/krb5/gsskrb5-private.h
nobase_include_HEADERS = \
gssapi/gssapi.h \

View File

@@ -85,7 +85,6 @@ dist_libhdb_la_SOURCES = \
hdb-keytab.c \
hdb-mitdb.c \
hdb_locl.h \
hdb-private.h \
keys.c \
keytab.c \
dbinfo.c \
@@ -97,7 +96,7 @@ nodist_libhdb_la_SOURCES = $(BUILT_SOURCES)
libhdb_la_DEPENDENCIES = version-script.map
include_HEADERS = hdb.h hdb-protos.h
include_HEADERS = hdb.h $(srcdir)/hdb-protos.h
nodist_include_HEADERS = hdb_err.h hdb_asn1.h
libhdb_la_LIBADD = \
@@ -111,13 +110,21 @@ libhdb_la_LIBADD = \
$(DBLIB) \
$(LIB_NDBM)
$(libhdb_la_OBJECTS): $(srcdir)/hdb-protos.h $(srcdir)/hdb-private.h
HDB_PROTOS = $(srcdir)/hdb-protos.h $(srcdir)/hdb-private.h
ALL_OBJECTS = $(libhdb_la_OBJECTS)
ALL_OBJECTS += $(test_dbinfo_OBJECTS)
ALL_OBJECTS += $(test_hdbkeys_OBJECTS)
ALL_OBJECTS += $(test_mkey_OBJECTS)
$(ALL_OBJECTS): $(HDB_PROTOS)
$(libhdb_la_OBJECTS): hdb_asn1.h hdb_asn1-priv.h hdb_err.h
$(srcdir)/hdb-protos.h:
$(srcdir)/hdb-protos.h: $(dist_libhdb_la_SOURCES)
cd $(srcdir); perl ../../cf/make-proto.pl -q -P comment -o hdb-protos.h $(dist_libhdb_la_SOURCES) || rm -f hdb-protos.h
$(srcdir)/hdb-private.h:
$(srcdir)/hdb-private.h: $(dist_libhdb_la_SOURCES)
cd $(srcdir); perl ../../cf/make-proto.pl -q -P comment -p hdb-private.h $(dist_libhdb_la_SOURCES) || rm -f hdb-private.h
$(gen_files_hdb) hdb_asn1.hx hdb_asn1-priv.hx: hdb_asn1_files

View File

@@ -62,8 +62,6 @@ dist_libhx509_la_SOURCES = \
error.c \
env.c \
file.c \
hx509-private.h \
hx509-protos.h \
hx509.h \
hx_locl.h \
sel.c \
@@ -116,7 +114,7 @@ $(gen_files_ocsp) ocsp_asn1.hx ocsp_asn1-priv.hx: ocsp_asn1_files
$(gen_files_pkcs10) pkcs10_asn1.hx pkcs10_asn1-priv.hx: pkcs10_asn1_files
$(gen_files_crmf) crmf_asn1.hx crmf_asn1-priv.hx: crmf_asn1_files
dist_include_HEADERS = hx509.h hx509-protos.h
dist_include_HEADERS = hx509.h $(srcdir)/hx509-protos.h
nodist_include_HEADERS = hx509_err.h
nodist_include_HEADERS += ocsp_asn1.h
@@ -137,13 +135,20 @@ pkcs10_asn1_files: $(ASN1_COMPILE_DEP) $(srcdir)/pkcs10.asn1 $(srcdir)/pkcs10.op
crmf_asn1_files: $(ASN1_COMPILE_DEP) $(srcdir)/crmf.asn1
$(heim_verbose)$(ASN1_COMPILE) $(srcdir)/crmf.asn1 crmf_asn1 || (rm -f crmf_asn1_files ; exit 1)
$(libhx509_la_OBJECTS): $(srcdir)/hx509-protos.h $(srcdir)/hx509-private.h $(srcdir)/hx_locl.h
HX509_PROTOS = $(srcdir)/hx509-protos.h $(srcdir)/hx509-private.h
ALL_OBJECTS = $(libhx509_la_OBJECTS)
ALL_OBJECTS += $(hxtool_OBJECTS)
$(ALL_OBJECTS): $(HX509_PROTOS)
$(libhx509_la_OBJECTS): $(srcdir)/hx_locl.h
$(libhx509_la_OBJECTS): ocsp_asn1.h pkcs10_asn1.h
$(srcdir)/hx509-protos.h:
$(srcdir)/hx509-protos.h: $(dist_libhx509_la_SOURCES)
$(heim_verbose)cd $(srcdir) && perl ../../cf/make-proto.pl -R '^(_|^C)' -E HX509_LIB -q -P comment -o hx509-protos.h $(dist_libhx509_la_SOURCES) || rm -f hx509-protos.h
$(srcdir)/hx509-private.h:
$(srcdir)/hx509-private.h: $(dist_libhx509_la_SOURCES)
$(heim_verbose)cd $(srcdir) && perl ../../cf/make-proto.pl -q -P comment -p hx509-private.h $(dist_libhx509_la_SOURCES) || rm -f hx509-private.h
bin_PROGRAMS = hxtool
@@ -154,7 +159,7 @@ hxtool-commands.c hxtool-commands.h: hxtool-commands.in $(SLC)
dist_hxtool_SOURCES = hxtool.c
nodist_hxtool_SOURCES = hxtool-commands.c hxtool-commands.h
$(hxtool_OBJECTS): hxtool-commands.h
$(hxtool_OBJECTS): hxtool-commands.h hx509_err.h
hxtool_CPPFLAGS = $(INCLUDE_hcrypto)
hxtool_LDADD = \

View File

@@ -33,7 +33,7 @@ kadm5includedir = $(includedir)/kadm5
buildkadm5include = $(buildinclude)/kadm5
dist_kadm5include_HEADERS = admin.h private.h kadm5-pwcheck.h
dist_kadm5include_HEADERS += kadm5-protos.h kadm5-private.h
dist_kadm5include_HEADERS += $(srcdir)/kadm5-protos.h $(srcdir)/kadm5-private.h
nodist_kadm5include_HEADERS = kadm5_err.h
@@ -164,17 +164,29 @@ CLEANFILES = kadm5_err.c kadm5_err.h iprop-commands.h iprop-commands.c
kadm5_err.h: kadm5_err.et
$(libkadm5clnt_la_OBJECTS) $(libkadm5srv_la_OBJECTS): $(srcdir)/kadm5-protos.h $(srcdir)/kadm5-private.h
ALL_OBJECTS = $(libkadm5clnt_la_OBJECTS)
ALL_OBJECTS += $(libkadm5srv_la_OBJECTS)
ALL_OBJECTS += $(ipropd_master_OBJECTS)
ALL_OBJECTS += $(ipropd_slave_OBJECTS)
ALL_OBJECTS += $(iprop_log_OBJECTS)
ALL_OBJECTS += $(test_pw_quality_OBJECTS)
ALL_OBJECTS += $(sample_passwd_check_la_OBJECTS)
ALL_OBJECTS += $(default_keys_OBJECTS)
$(ALL_OBJECTS): $(srcdir)/kadm5-protos.h $(srcdir)/kadm5-private.h
KADM5_PROTOS_SRCS = $(dist_libkadm5clnt_la_SOURCES)
KADM5_PROTOS_SRCS += $(dist_libkadm5srv_la_SOURCES)
proto_opts = -q -R '^(_|kadm5_c_|kadm5_s_|kadm5_log)' -P comment
$(srcdir)/kadm5-protos.h:
$(srcdir)/kadm5-protos.h: $(KADM5_PROTOS_SRCS)
cd $(srcdir); perl ../../cf/make-proto.pl $(proto_opts) \
-o kadm5-protos.h \
$(dist_libkadm5clnt_la_SOURCES) \
$(dist_libkadm5srv_la_SOURCES) \
|| rm -f kadm5-protos.h
$(srcdir)/kadm5-private.h:
$(srcdir)/kadm5-private.h: $(KADM5_PROTOS_SRCS)
cd $(srcdir); perl ../../cf/make-proto.pl $(proto_opts) \
-p kadm5-private.h \
$(dist_libkadm5clnt_la_SOURCES) \

View File

@@ -15,7 +15,8 @@ noinst_PROGRAMS = \
test_gic \
test_kuserok \
test_renew \
test_rfc3961
test_rfc3961
noinst_LTLIBRARIES = \
librfc3961.la
@@ -247,7 +248,22 @@ if versionscript
libkrb5_la_LDFLAGS += $(LDFLAGS_VERSION_SCRIPT)$(srcdir)/version-script.map
endif
$(libkrb5_la_OBJECTS) $(verify_krb5_conf_OBJECTS) $(librfc3961_la_OBJECTS): $(srcdir)/krb5-protos.h $(srcdir)/krb5-private.h krb5_err.h heim_err.h k524_err.h krb5_err.h krb_err.h k524_err.h
ALL_OBJECTS = $(libkrb5_la_OBJECTS)
ALL_OBJECTS += $(verify_krb5_conf_OBJECTS)
ALL_OBJECTS += $(librfc3961_la_OBJECTS)
ALL_OBJECTS += $(librfc3961_la_OBJECTS)
ALL_OBJECTS += $(krbhst_test_OBJECTS)
ALL_OBJECTS += $(test_alname_OBJECTS)
ALL_OBJECTS += $(test_crypto_OBJECTS)
ALL_OBJECTS += $(test_forward_OBJECTS)
ALL_OBJECTS += $(test_get_addrs_OBJECTS)
ALL_OBJECTS += $(test_gic_OBJECTS)
ALL_OBJECTS += $(test_kuserok_OBJECTS)
ALL_OBJECTS += $(test_renew_OBJECTS)
ALL_OBJECTS += $(test_rfc3961_OBJECTS)
$(ALL_OBJECTS): $(srcdir)/krb5-protos.h $(srcdir)/krb5-private.h
$(ALL_OBJECTS): krb5_err.h heim_err.h k524_err.h krb5_err.h krb_err.h k524_err.h
librfc3961_la_SOURCES = \
crc.c \
@@ -341,8 +357,8 @@ man_MANS = \
dist_include_HEADERS = \
krb5.h \
krb5-protos.h \
krb5-private.h \
$(srcdir)/krb5-protos.h \
$(srcdir)/krb5-private.h \
krb5_ccapi.h
nodist_include_HEADERS = krb5_err.h heim_err.h k524_err.h

View File

@@ -6,7 +6,7 @@ AM_CPPFLAGS += $(INCLUDE_hcrypto)
lib_LTLIBRARIES = libheimntlm.la
dist_include_HEADERS = heimntlm.h heimntlm-protos.h
dist_include_HEADERS = heimntlm.h $(srcdir)/heimntlm-protos.h
nodist_include_HEADERS = ntlm_err.h
@@ -26,7 +26,7 @@ libheimntlm_la_LIBADD = \
$(LIB_hcrypto) \
$(LIBADD_roken)
$(srcdir)/heimntlm-protos.h:
$(srcdir)/heimntlm-protos.h: $(dist_libheimntlm_la_SOURCES)
cd $(srcdir) && perl ../../cf/make-proto.pl -q -P comment -o heimntlm-protos.h $(dist_libheimntlm_la_SOURCES) || rm -f heimntlm-protos.h
$(libheimntlm_la_OBJECTS): $(srcdir)/heimntlm-protos.h ntlm_err.h