Annotation of src/usr.bin/make/enginechoice.c, Revision 1.3
1.3 ! espie 1: /* $OpenBSD: enginechoice.c,v 1.2 2021/03/04 09:32:49 espie Exp $ */
1.2 espie 2: /*
3: * Copyright (c) 2020 Marc Espie.
4: *
5: * Redistribution and use in source and binary forms, with or without
6: * modification, are permitted provided that the following conditions
7: * are met:
8: * 1. Redistributions of source code must retain the above copyright
9: * notice, this list of conditions and the following disclaimer.
10: * 2. Redistributions in binary form must reproduce the above copyright
11: * notice, this list of conditions and the following disclaimer in the
12: * documentation and/or other materials provided with the distribution.
13: *
14: * THIS SOFTWARE IS PROVIDED BY THE OPENBSD PROJECT AND CONTRIBUTORS
15: * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
17: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBSD
18: * PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
20: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25: */
1.1 espie 26: #include "config.h"
27: #include "defines.h"
28: #include "compat.h"
29: #include "make.h"
1.3 ! espie 30: #include "enginechoice.h"
1.1 espie 31:
32: struct engine {
33: void (*run_list)(Lst, bool *, bool *);
34: void (*node_updated)(GNode *);
35: void (*init)(void);
36: }
37: compat_engine = { Compat_Run, Compat_Update, Compat_Init },
38: parallel_engine = { Make_Run, Make_Update, Make_Init },
39: *engine;
40:
41: void
42: choose_engine(bool compat)
43: {
44: engine = compat ? &compat_engine: ¶llel_engine;
45: engine->init();
46: }
47:
48: void
49: engine_run_list(Lst l, bool *has_errors, bool *out_of_date)
50: {
51: engine->run_list(l, has_errors, out_of_date);
52: }
53:
54: void
55: engine_node_updated(GNode *gn)
56: {
57: engine->node_updated(gn);
58: }