mirror of
https://github.com/mirror/make.git
synced 2025-01-03 00:40:34 +08:00
621d3196fa
Introduce non-deterministic ordering into goal and prerequisite traversal to help tease out inconsistent failures that may happen when running in parallel build mode. Introduce second order into each dependency chain: 1. Existing order is syntactic order reachable via 'dep->next' 2. New order is shuffled order stored as 'dep->shuf' in each 'dep' When updating goals and prerequisites and '--shuffle' is provided, use the shuffled order to walk the graph. When automatic variable are set always use the syntactic order of parameters. * Makefile.am: Add new src/shuffle.c and src/shuffle.h file. * build_w32.bat: Ditto. * builddos.bat: Ditto. * makefile.com: Ditto. * po/POTFILES.in: Ditto. * doc/make.texi: Add documentation for --shuffle. * doc/make.1: Ditto. * src/dep.h (DEP): Add the shuf pointer. * src/filedef.h (struct file): Add was_shuffled flag. * src/main.c: (shuffle_mode): Global flag for the shuffle mode. (usage): Add the --shuffle option. (switches): Ditto. (main): Set shuffle_mode based on the command line parameter. Reshuffle prerequisites if requested. * src/remake.c (update_goal_chain): Walk the shuffled list if enabled. (update_file_1): Ditto. * src/shuffle.h: Provide an interface for shuffling prerequisites. * src/shuffle.c: Implement option parsing and prerequisite shuffling. * tests/scripts/options/shuffle: Test shuffle option and modes.
49 lines
1.2 KiB
Plaintext
49 lines
1.2 KiB
Plaintext
# List of source files containing translatable strings.
|
|
# Copyright (C) 2000-2022 Free Software Foundation, Inc.
|
|
# This file is part of GNU Make.
|
|
#
|
|
# GNU Make is free software; you can redistribute it and/or modify it under
|
|
# the terms of the GNU General Public License as published by the Free Software
|
|
# Foundation; either version 3 of the License, or (at your option) any later
|
|
# version.
|
|
#
|
|
# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
|
# details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License along with
|
|
# this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
src/ar.c
|
|
src/arscan.c
|
|
src/commands.c
|
|
src/dir.c
|
|
src/expand.c
|
|
src/file.c
|
|
src/function.c
|
|
src/getopt.c
|
|
src/guile.c
|
|
src/hash.c
|
|
src/implicit.c
|
|
src/job.c
|
|
src/load.c
|
|
src/main.c
|
|
src/misc.c
|
|
src/output.c
|
|
src/output.h
|
|
src/posixos.c
|
|
src/read.c
|
|
src/remake.c
|
|
src/remote-cstms.c
|
|
src/rule.c
|
|
src/shuffle.c
|
|
src/signame.c
|
|
src/strcache.c
|
|
src/variable.c
|
|
src/variable.h
|
|
src/vmsfunctions.c
|
|
src/vmsjobs.c
|
|
src/vpath.c
|
|
src/w32/w32os.c
|