Annotation of src/usr.bin/make/arch.h, Revision 1.3
1.1 espie 1: #ifndef ARCH_H
2: #define ARCH_H
3: /* $OpenPackages$ */
1.3 ! espie 4: /* $OpenBSD: arch.h,v 1.2 2007/09/17 09:28:36 espie Exp $ */
1.1 espie 5:
6: /*
7: * Copyright (c) 2001 Marc Espie.
8: *
9: * Redistribution and use in source and binary forms, with or without
10: * modification, are permitted provided that the following conditions
11: * are met:
12: * 1. Redistributions of source code must retain the above copyright
13: * notice, this list of conditions and the following disclaimer.
14: * 2. Redistributions in binary form must reproduce the above copyright
15: * notice, this list of conditions and the following disclaimer in the
16: * documentation and/or other materials provided with the distribution.
17: *
18: * THIS SOFTWARE IS PROVIDED BY THE OPENBSD PROJECT AND CONTRIBUTORS
19: * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBSD
22: * PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29: */
30:
31: /*-
32: * arch --
33: * Functions to manipulate libraries, archives and their members.
34: */
35:
36: #ifndef TIMESTAMP_TYPE
37: #include "timestamp_t.h"
38: #endif
39:
40: /* Initialization and cleanup */
41: extern void Arch_Init(void);
42: #ifdef CLEANUP
43: extern void Arch_End(void);
44: #else
45: #define Arch_End()
46: #endif
47:
48: /* ok = Arch_ParseArchive(&begin, nodeLst, ctxt);
49: * Given an archive specification, add list of corresponding GNodes to
1.2 espie 50: * nodeLst, one for each member in the spec.
1.1 espie 51: * false is returned if the specification is invalid for some reason.
52: * Side-effect: begin is bumped to the end of the specification. */
53: extern bool Arch_ParseArchive(char **, Lst, SymTable *);
54: /* Arch_Touch(node);
1.2 espie 55: * Alter the modification time of the archive member described by node
1.1 espie 56: * to the current time. */
57: extern void Arch_Touch(GNode *);
58: /* Arch_TouchLib(node);
1.2 espie 59: * Update the modification time of the library described by node.
1.1 espie 60: * This is distinct from Arch_Touch, as it also updates the mtime
61: * of the library's table of contents. */
62: extern void Arch_TouchLib(GNode *);
1.3 ! espie 63: /* stamp = Arch_MTime(node);
1.1 espie 64: * Find the modification time of a member of an archive *in the
65: * archive*, and returns it.
66: * The time is also stored in the member's GNode. */
67: extern TIMESTAMP Arch_MTime(GNode *);
1.3 ! espie 68: /* stamp = Arch_MemMTime(node);
1.2 espie 69: * Find the modification time of a member of an archive and returns it.
1.1 espie 70: * To use when the member only exists within the archive. */
71: extern TIMESTAMP Arch_MemMTime(GNode *);
72: /* Arch_FindLib(node, path);
73: * Search for a library node along a path, and fills the gnode's path
74: * field to the actual complete path. If we don't find it, we set the
75: * library name to libname.a, assuming some other mechanism will take
76: * care of finding it. The library name should be in -l<name> format. */
77: extern void Arch_FindLib(GNode *, Lst);
78: /* bool = Arch_LibOODate(node);
79: * Decide whether a library node is out-of-date. */
80: extern bool Arch_LibOODate(GNode *);
81:
82: /* bool = Arch_IsLib(node);
83: * Decide whether a node is a library. */
84: extern bool Arch_IsLib(GNode *);
85:
86: #endif