]>
Commit | Line | Data |
---|---|---|
6d2010ae A |
1 | /* |
2 | * Copyright (c) 1999-2009 Apple Inc. All rights reserved. | |
3 | * | |
4 | * @APPLE_LICENSE_HEADER_START@ | |
5 | * | |
6 | * "Portions Copyright (c) 1999 Apple Computer, Inc. All Rights | |
7 | * Reserved. This file contains Original Code and/or Modifications of | |
8 | * Original Code as defined in and that are subject to the Apple Public | |
9 | * Source License Version 1.0 (the 'License'). You may not use this file | |
10 | * except in compliance with the License. Please obtain a copy of the | |
11 | * License at http://www.apple.com/publicsource and read it before using | |
12 | * this file. | |
13 | * | |
14 | * The Original Code and all software distributed under the License are | |
15 | * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER | |
16 | * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, | |
17 | * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, | |
18 | * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the | |
19 | * License for the specific language governing rights and limitations | |
20 | * under the License." | |
21 | * | |
22 | * @APPLE_LICENSE_HEADER_END@ | |
23 | */ | |
24 | /* | |
25 | * Mach Operating System | |
26 | * Copyright (c) 1990 Carnegie-Mellon University | |
27 | * Copyright (c) 1989 Carnegie-Mellon University | |
28 | * Copyright (c) 1988 Carnegie-Mellon University | |
29 | * Copyright (c) 1987 Carnegie-Mellon University | |
30 | * All rights reserved. The CMU software License Agreement specifies | |
31 | * the terms and conditions for use and redistribution. | |
32 | */ | |
33 | ||
34 | /* | |
35 | * Copyright (c) 1980 Regents of the University of California. | |
36 | * All rights reserved. | |
37 | * | |
38 | * Redistribution and use in source and binary forms are permitted | |
39 | * provided that the above copyright notice and this paragraph are | |
40 | * duplicated in all such forms and that any documentation, | |
41 | * advertising materials, and other materials related to such | |
42 | * distribution and use acknowledge that the software was developed | |
43 | * by the University of California, Berkeley. The name of the | |
44 | * University may not be used to endorse or promote products derived | |
45 | * from this software without specific prior written permission. | |
46 | * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR | |
47 | * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED | |
48 | * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. | |
49 | * | |
50 | * @(#)config.h 5.8 (Berkeley) 6/18/88 | |
51 | */ | |
52 | ||
53 | /* | |
54 | * Config. | |
55 | */ | |
56 | ||
57 | #include <stdio.h> | |
58 | #include <sys/types.h> | |
59 | #include <sys/param.h> | |
60 | #include <stdlib.h> | |
61 | #include <string.h> | |
62 | ||
63 | struct file_list { | |
64 | struct file_list *f_next; | |
65 | char *f_fn; /* the name */ | |
66 | u_char f_type; /* see below */ | |
67 | u_char f_flags; /* see below */ | |
68 | short f_special; /* requires special make rule */ | |
69 | char *f_needs; | |
70 | char *f_extra; /* stuff to add to make line */ | |
6d2010ae A |
71 | }; |
72 | ||
73 | /* | |
74 | * Types. | |
75 | */ | |
76 | #define DRIVER 1 | |
77 | #define NORMAL 2 | |
78 | #define INVISIBLE 3 | |
79 | #define PROFILING 4 | |
6d2010ae A |
80 | |
81 | /* | |
82 | * Attributes (flags). | |
83 | */ | |
84 | #define CONFIGDEP 0x01 /* obsolete? */ | |
85 | #define OPTIONSDEF 0x02 /* options definition entry */ | |
6d2010ae A |
86 | |
87 | struct device { | |
88 | int d_type; /* CONTROLLER, DEVICE, bus adaptor */ | |
6d2010ae | 89 | const char *d_name; /* name of device (e.g. rk11) */ |
6d2010ae A |
90 | int d_slave; /* slave number */ |
91 | #define QUES -1 /* -1 means '?' */ | |
92 | #define UNKNOWN -2 /* -2 means not set yet */ | |
6d2010ae A |
93 | int d_flags; /* nlags for device init */ |
94 | struct device *d_next; /* Next one in list */ | |
6d2010ae A |
95 | char *d_init; /* pseudo device init routine name */ |
96 | }; | |
6d2010ae A |
97 | |
98 | /* | |
99 | * Config has a global notion of which machine type is | |
100 | * being used. It uses the name of the machine in choosing | |
101 | * files and directories. Thus if the name of the machine is ``vax'', | |
102 | * it will build from ``Makefile.vax'' and use ``../vax/inline'' | |
103 | * in the makerules, etc. | |
104 | */ | |
6d2010ae | 105 | extern const char *machinename; |
6d2010ae A |
106 | |
107 | /* | |
108 | * In order to configure and build outside the kernel source tree, | |
109 | * we may wish to specify where the source tree lives. | |
110 | */ | |
111 | extern const char *source_directory; | |
112 | extern const char *object_directory; | |
113 | extern char *config_directory; | |
114 | ||
115 | FILE *fopenp(const char *fpath, char *file, char *complete, const char *ftype); | |
116 | const char *get_VPATH(void); | |
117 | #define VPATH get_VPATH() | |
118 | ||
119 | /* | |
120 | * A set of options may also be specified which are like CPU types, | |
121 | * but which may also specify values for the options. | |
122 | * A separate set of options may be defined for make-style options. | |
123 | */ | |
124 | struct opt { | |
125 | char *op_name; | |
126 | char *op_value; | |
127 | struct opt *op_next; | |
128 | }; | |
129 | ||
130 | extern struct opt *opt, *mkopt, *opt_tail, *mkopt_tail; | |
131 | ||
6d2010ae A |
132 | const char *get_word(FILE *fp); |
133 | char *ns(const char *str); | |
134 | char *qu(int num); | |
135 | char *path(const char *file); | |
136 | ||
137 | extern int do_trace; | |
138 | ||
6d2010ae A |
139 | extern struct device *dtab; |
140 | dev_t nametodev(char *name, int defunit, char defpartition); | |
141 | char *devtoname(dev_t dev); | |
142 | ||
143 | extern char errbuf[80]; | |
144 | extern int yyline; | |
145 | ||
146 | extern struct file_list *ftab, *conf_list, **confp; | |
147 | extern char *build_directory; | |
148 | ||
149 | extern int profiling; | |
150 | ||
6d2010ae A |
151 | #define eq(a,b) (!strcmp(a,b)) |
152 | ||
6d2010ae A |
153 | #define DEV_MASK 0x7 |
154 | #define DEV_SHIFT 3 | |
6d2010ae A |
155 | |
156 | /* External function references */ | |
157 | char *get_rest(FILE *fp); | |
158 | ||
159 | int yyparse(void); | |
160 | void yyerror(const char *s); | |
161 | ||
fe8ab488 | 162 | void mkioconf(void); |
6d2010ae A |
163 | |
164 | void makefile(void); | |
165 | void headers(void); | |
166 | int opteq(const char *cp, const char *dp); | |
167 | ||
168 | void init_dev(struct device *dp); | |
169 | void newdev(struct device *dp); | |
170 | void dev_param(struct device *dp, const char *str, long num); | |
171 | ||
172 | int searchp(const char *spath, char *file, char *fullname, int (*func)(char *)); |