|
11 | 11 | # Copyright (c) 2004-2005 The Regents of the University of California.
|
12 | 12 | # All rights reserved.
|
13 | 13 | # Copyright (c) 2013-2020 Intel, Inc. All rights reserved.
|
14 |
| -# Copyright (c) 2007-2020 Cisco Systems, Inc. All rights reserved |
| 14 | +# Copyright (c) 2007-2022 Cisco Systems, Inc. All rights reserved |
15 | 15 | # Copyright (c) 2017 Research Organization for Information Science
|
16 | 16 | # and Technology (RIST). All rights reserved.
|
17 | 17 | # Copyright (c) 2021-2022 Nanook Consulting All rights reserved.
|
|
23 | 23 | # $HEADER$
|
24 | 24 | #
|
25 | 25 |
|
| 26 | +# The Automake BUILT_SOURCES hook ultimately calls |
| 27 | +# construct_dictionary.py to generate both pmix_dictionary.h and |
| 28 | +# pmix_dictionary.c. However, in a parallel "make" invocation, this |
| 29 | +# script could be executed twice simultaneously, which *could* lead to |
| 30 | +# the generated pmix_dictionary.* files being corrupted (i.e., two |
| 31 | +# invokcations simultaneously writing to these generated files). To |
| 32 | +# prevent that from happening, force this one Makefile to be run |
| 33 | +# serially via the .NOTPARALLEL target. This has two side-effects: |
| 34 | +# |
| 35 | +# 1. construct_dictionary.py will only be invokved once, because since |
| 36 | +# both targets are created in the first invocation, make won't need |
| 37 | +# to invoke it a second time for the second target. This is both |
| 38 | +# expected and good. |
| 39 | +# 2. There is a (very) minor performance implication for the |
| 40 | +# other make steps in this Makefile.am (i.e., they won't be run in |
| 41 | +# parallel). But this simple solution to avoid a devious potential |
| 42 | +# file corruption issue is an acceptable tradeoff. |
| 43 | +.NOTPARALLEL: |
| 44 | + |
26 | 45 | AM_CFLAGS = \
|
27 | 46 | -DPMIX_PROXY_VERSION_STRING="\"@PMIX_VERSION@\"" \
|
28 | 47 | -DPMIX_PROXY_BUGREPORT_STRING="\"@PMIX_PROXY_BUGREPORT_STRING@\""
|
|
0 commit comments