8aa7a37cce
/* * filename [ standard | optional ] [ config-dependent ] * [ dev* | profiling-routine ] [ device-driver] [ no-obj ] * [ compile-with "compile rule" [no-implicit-rule] ] * [ dependancy "dependancy-list"] */ I added no-obj - This entry does not create anything linkable to the kernel. dependancy - Add additional dependancy rules to a target. no-implicit-rule - Don't assume .c -> .o type rules. Config is really dumb in this area and assumes that everything is a .c file irregarless of extention. This was the best choice really since there may even be .c file that you don't want to follow the standard rules. This was all done so that the building to the aic7770 assembler and using the aic7770 assembler in the building of the aic7770 driver could be config dependant. I can now have an entry like this for the driver: aic7770 optional ahc device-driver \ compile-with "${CC} $> -o $@" \ dependancy "$S/gnu/misc/aic7770/aic7770.c" \ no-obj no-implicit-rule aic7770_seq.h optional ahc device-driver \ compile-with "${.CURDIR}/aic7770 -o $@ $S/gnu/misc/aic7770/aic7770.seq"\ dependancy "$S/gnu/misc/aic7770/aic7770.seq aic7770" \ no-obj no-implicit-rule i386/isa/aic7770.c optional ahc device-driver \ dependancy "aic7770_seq.h" I also added '\' escaping to newlines so that this doesn't look as gross as it could have. Reviewed by: jkh
216 lines
5.8 KiB
C
216 lines
5.8 KiB
C
/*
|
|
* Copyright (c) 1980, 1993
|
|
* The Regents of the University of California. All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
* 3. All advertising materials mentioning features or use of this software
|
|
* must display the following acknowledgement:
|
|
* This product includes software developed by the University of
|
|
* California, Berkeley and its contributors.
|
|
* 4. Neither the name of the University nor the names of its contributors
|
|
* may be used to endorse or promote products derived from this software
|
|
* without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
* SUCH DAMAGE.
|
|
*
|
|
* @(#)config.h 8.1 (Berkeley) 6/6/93
|
|
*/
|
|
|
|
/*
|
|
* Config.
|
|
*/
|
|
#include <sys/types.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#define NODEV ((dev_t)-1)
|
|
|
|
struct file_list {
|
|
struct file_list *f_next;
|
|
char *f_fn; /* the name */
|
|
u_char f_type; /* see below */
|
|
u_char f_flags; /* see below */
|
|
char *f_special; /* special make rule if present */
|
|
char *f_depends; /* additional dependancies */
|
|
char *f_needs;
|
|
/*
|
|
* Random values:
|
|
* swap space parameters for swap areas
|
|
* root device, etc. for system specifications
|
|
*/
|
|
union {
|
|
struct { /* when swap specification */
|
|
dev_t fuw_swapdev;
|
|
int fuw_swapsize;
|
|
int fuw_swapflag;
|
|
} fuw;
|
|
struct { /* when system specification */
|
|
dev_t fus_rootdev;
|
|
dev_t fus_dumpdev;
|
|
} fus;
|
|
struct { /* when component dev specification */
|
|
dev_t fup_compdev;
|
|
int fup_compinfo;
|
|
} fup;
|
|
} fun;
|
|
#define f_swapdev fun.fuw.fuw_swapdev
|
|
#define f_swapsize fun.fuw.fuw_swapsize
|
|
#define f_swapflag fun.fuw.fuw_swapflag
|
|
#define f_rootdev fun.fus.fus_rootdev
|
|
#define f_dumpdev fun.fus.fus_dumpdev
|
|
#define f_compdev fun.fup.fup_compdev
|
|
#define f_compinfo fun.fup.fup_compinfo
|
|
};
|
|
|
|
/*
|
|
* Types.
|
|
*/
|
|
#define DRIVER 1
|
|
#define NORMAL 2
|
|
#define INVISIBLE 3
|
|
#define PROFILING 4
|
|
#define SYSTEMSPEC 5
|
|
#define SWAPSPEC 6
|
|
#define COMPDEVICE 7
|
|
#define COMPSPEC 8
|
|
|
|
/*
|
|
* Attributes (flags).
|
|
*/
|
|
#define CONFIGDEP 1
|
|
#define NO_IMPLCT_RULE 2
|
|
#define NO_OBJ 4
|
|
|
|
struct idlst {
|
|
char *id;
|
|
struct idlst *id_next;
|
|
};
|
|
|
|
struct device {
|
|
int d_type; /* CONTROLLER, DEVICE, bus adaptor */
|
|
struct device *d_conn; /* what it is connected to */
|
|
char *d_name; /* name of device (e.g. rk11) */
|
|
struct idlst *d_vec; /* interrupt vectors */
|
|
int d_pri; /* interrupt priority */
|
|
int d_addr; /* address of csr */
|
|
int d_unit; /* unit number */
|
|
int d_drive; /* drive number */
|
|
int d_slave; /* slave number */
|
|
#define QUES -1 /* -1 means '?' */
|
|
#define UNKNOWN -2 /* -2 means not set yet */
|
|
int d_dk; /* if init 1 set to number for iostat */
|
|
int d_flags; /* flags for device init */
|
|
char *d_port; /* io port base manifest constant */
|
|
int d_portn; /* io port base (if number not manifest) */
|
|
char *d_mask; /* interrupt mask */
|
|
int d_maddr; /* io memory base */
|
|
int d_msize; /* io memory size */
|
|
int d_drq; /* DMA request */
|
|
int d_irq; /* interrupt request */
|
|
struct device *d_next; /* Next one in list */
|
|
};
|
|
#define TO_NEXUS (struct device *)-1
|
|
#define TO_VBA (struct device *)-2
|
|
|
|
struct config {
|
|
char *c_dev;
|
|
char *s_sysname;
|
|
};
|
|
|
|
/*
|
|
* Config has a global notion of which machine type is
|
|
* being used. It uses the name of the machine in choosing
|
|
* files and directories. Thus if the name of the machine is ``vax'',
|
|
* it will build from ``Makefile.vax'' and use ``../vax/inline''
|
|
* in the makerules, etc.
|
|
*/
|
|
int machine;
|
|
char *machinename;
|
|
#define MACHINE_VAX 1
|
|
#define MACHINE_TAHOE 2
|
|
#define MACHINE_HP300 3
|
|
#define MACHINE_I386 4
|
|
#define MACHINE_MIPS 5
|
|
#define MACHINE_PMAX 6
|
|
#define MACHINE_LUNA68K 7
|
|
#define MACHINE_NEWS3400 8
|
|
|
|
/*
|
|
* For each machine, a set of CPU's may be specified as supported.
|
|
* These and the options (below) are put in the C flags in the makefile.
|
|
*/
|
|
struct cputype {
|
|
char *cpu_name;
|
|
struct cputype *cpu_next;
|
|
} *cputype;
|
|
|
|
/*
|
|
* A set of options may also be specified which are like CPU types,
|
|
* but which may also specify values for the options.
|
|
* A separate set of options may be defined for make-style options.
|
|
*/
|
|
struct opt {
|
|
char *op_name;
|
|
char *op_value;
|
|
struct opt *op_next;
|
|
} *opt, *mkopt;
|
|
|
|
char *ident;
|
|
char *ns();
|
|
char *tc();
|
|
char *qu();
|
|
char *get_word();
|
|
char *get_quoted_word();
|
|
char *path();
|
|
char *raise();
|
|
|
|
int do_trace;
|
|
|
|
#if MACHINE_VAX
|
|
int seen_mba, seen_uba;
|
|
#endif
|
|
#if MACHINE_TAHOE
|
|
int seen_vba;
|
|
#endif
|
|
#if MACHINE_I386
|
|
int seen_isa;
|
|
#endif
|
|
int seen_cd;
|
|
|
|
struct device *connect();
|
|
struct device *dtab;
|
|
dev_t nametodev();
|
|
char *devtoname();
|
|
|
|
char errbuf[80];
|
|
int yyline;
|
|
|
|
struct file_list *ftab, *conf_list, **confp, *comp_list, **compp;
|
|
|
|
int zone, hadtz;
|
|
int dst;
|
|
int profiling;
|
|
int debugging;
|
|
|
|
int maxusers;
|
|
u_int loadaddress;
|
|
|
|
#define eq(a,b) (!strcmp(a,b))
|