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

@@ -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