/* Id */ /* $NetBSD: driver.h,v 1.1.1.1 2016/02/09 20:29:13 plunky Exp $ */ /*- * Copyright (c) 2014 Iain Hibbert. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ #include "config.h" typedef struct list list_t; struct options { const char * cpp; const char * ccom; const char * cxxcom; const char * fcom; const char * as; const char * ld; const char * sysroot; int version; list_t * prefix; int C; list_t * DIU; int E; list_t * ldargs; int M; int m32; int P; int S; list_t * Wa; list_t * Wl; list_t * Wp; int savetemps; int c; int dynamiclib; int hosted; int uchar; int pic; int ssp; int idirafter; const char * isystem; list_t * include; const char * isysroot; int stdinc; int cxxinc; int stdlib; int startfiles; int defaultlibs; const char * outfile; int pedantic; int profile; int pipe; int print; int pthread; int r; int shared; int ldstatic; int symbolic; int traditional; int stddef; int verbose; int debug; /* -g */ int optim; /* -O */ }; #define ARRAYLEN(a) (sizeof(a)/sizeof((a)[0])) extern struct options opt; /* "Warns" flags */ #define W_SET (1<<0) #define W_ERR (1<<1) #define W_ALL (1<<2) #define W_EXTRA (1<<3) #define W_CPP (1<<4) #define W_CCOM (1<<5) #define W_CXXCOM (1<<6) #define W_FCOM (1<<7) #define W_AS (1<<8) #define W_LD (1<<9) /* driver.c */ void error(const char *fmt, ...); void warning(const char *fmt, ...); int callsys(int, char **); /* list.c */ const char **list_array(const list_t *); size_t list_count(const list_t *); list_t *list_alloc(void); void list_free(list_t *); void list_print(const list_t *); void list_add_nocopy(list_t *, const char *); void list_add(list_t *, const char *, ...); void list_add_array(list_t *, const char **); void list_add_list(list_t *, const list_t *); /* options.c */ int add_option(char *, char *); /* prog_asm.c */ int prog_asm(const char *, const char *); /* prog_ccom.c */ int prog_ccom(const char *, const char *); /* prog_cpp.c */ int prog_cpp(const char *, const char *); /* prog_cxxcom.c */ int prog_cxxcom(const char *, const char *); /* prog_fcom.c */ int prog_fcom(const char *, const char *); /* prog_link.c */ int prog_link(const char *, const char *); /* wflag.c */ int Wflag(const char *); void Wflag_add(list_t *, unsigned int); /* xalloc.c */ void *xcalloc(size_t, size_t); void *xmalloc(size_t); void *xrealloc(void *, size_t); char *xstrdup(const char *); .