diff options
author | Cory Fields <cory-nospam-@coryfields.com> | 2013-09-16 01:22:50 -0400 |
---|---|---|
committer | Cory Fields <cory-nospam-@coryfields.com> | 2013-09-16 01:59:03 -0400 |
commit | cae63be6c95b19c236a2333c1f2456e016e13f0f (patch) | |
tree | 07be650bbbd9d7ac03e5f89d706f9aff523ee847 | |
parent | 2975db76b3c6ce5f70d7dc547e74c61543191b22 (diff) |
autotools: fix a parallel build race condition spotted by the pull-tester
libleveldb.a and libmemenv.a should be able to build in parallel, but in
practice calling the leveldb makefile ends up rewriting build_config.mk. If
one target tries to build while the other is halfway through writing the
.mk, the make ends up in an undefined state.
Fix that by making one depend on the other. This also reorders the variables
to be passed by param rather than via the environment, and combines the targets
into a single rule to avoid needless duplication.
-rw-r--r-- | src/Makefile.am | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 65e675e525..2935c2daa9 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -50,13 +50,12 @@ bitcoind_SOURCES = bitcoind.cpp AM_CPPFLAGS += $(BDB_CPPFLAGS) bitcoind_LDADD += $(BDB_LIBS) -leveldb/libleveldb.a: - @echo "Building LevelDB ..." && cd leveldb && CXX="$(CXX)" CC="$(CC)" \ - PLATFORM=$(TARGET_OS) AR="$(AR)" $(MAKE) $(LEVELDB_TARGET_FLAGS) OPT="$(CXXFLAGS) $(CPPFLAGS)" libleveldb.a +leveldb/libleveldb.a: leveldb/libmemenv.a -leveldb/libmemenv.a: - @echo "Building LevelDB ..." && cd leveldb && CXX="$(CXX)" CC="$(CC)" \ - PLATFORM=$(TARGET_OS) AR="$(AR)" $(MAKE) $(LEVELDB_TARGET_FLAGS) OPT="$(CXXFLAGS) $(CPPFLAGS)" libmemenv.a +leveldb/%.a: + @echo "Building LevelDB ..." && $(MAKE) -C $(@D) $(@F) CXX="$(CXX)" \ + CC="$(CC)" PLATFORM=$(TARGET_OS) AR="$(AR)" $(LEVELDB_TARGET_FLAGS) \ + OPT="$(CXXFLAGS) $(CPPFLAGS)" qt/bitcoinstrings.cpp: $(libbitcoin_a_SOURCES) @test -n $(XGETTEXT) || echo "xgettext is required for updating translations" |