Replace system defines/includes with qfcc's

Right now, it probably works only with modern gcc.
This commit is contained in:
Bill Currie 2020-02-19 02:31:16 +09:00
parent 2d52da9c0d
commit bd6dcafdc8
5 changed files with 50 additions and 7 deletions

View file

@ -9,7 +9,7 @@ AC_ARG_WITH(cpp,
if test "x$cpp_name" != xauto; then
CPP_NAME="$cpp_name"
else
CPP_NAME="cpp %d -o %o %i"
CPP_NAME="cpp %u %d %s -o %o %i"
case "$host_os" in
*freebsd*)
CPP_NAME="cpp %d %i %o"

View file

@ -30,7 +30,7 @@ AC_ARG_WITH(cpp,
if test "x$cpp_name" != xauto; then
CPP_NAME="$cpp_name"
else
CPP_NAME="cpp %d -o %o %i"
CPP_NAME="cpp %u %d %s -o %o %i"
case "$target_os" in
*bsd*)
touch conftest.c

View file

@ -34,6 +34,8 @@
struct dstring_s;
void parse_cpp_name (void);
void add_cpp_sysinc (const char *arg);
void add_cpp_undef (const char *arg);
void add_cpp_def (const char *arg);
void intermediate_file (struct dstring_s *ifile, const char *filename,
const char *ext, int local);

View file

@ -67,11 +67,25 @@ cpp_arg_t *cpp_arg_list;
cpp_arg_t **cpp_arg_tail = &cpp_arg_list;
cpp_arg_t *cpp_def_list;
cpp_arg_t **cpp_def_tail = &cpp_def_list;
cpp_arg_t *cpp_undef_list;
cpp_arg_t **cpp_undef_tail = &cpp_undef_list;
cpp_arg_t *cpp_sysinc_list;
cpp_arg_t **cpp_sysinc_tail = &cpp_sysinc_list;
const char **cpp_argv;
const char *cpp_name = CPP_NAME;
static int cpp_argc = 0;
dstring_t *tempname;
static const char **
append_cpp_args (const char **arg, cpp_arg_t *arg_list)
{
cpp_arg_t *cpp_arg;
for (cpp_arg = arg_list; cpp_arg; cpp_arg = cpp_arg->next)
*arg++ = cpp_arg->arg;
return arg;
}
static void
add_cpp_arg (const char *arg)
{
@ -83,6 +97,28 @@ add_cpp_arg (const char *arg)
cpp_argc++;
}
void
add_cpp_sysinc (const char *arg)
{
cpp_arg_t *cpp_arg = malloc (sizeof (cpp_arg_t));
cpp_arg->next = 0;
cpp_arg->arg = arg;
*cpp_sysinc_tail = cpp_arg;
cpp_sysinc_tail = &(*cpp_sysinc_tail)->next;
cpp_argc++;
}
void
add_cpp_undef (const char *arg)
{
cpp_arg_t *cpp_arg = malloc (sizeof (cpp_arg_t));
cpp_arg->next = 0;
cpp_arg->arg = arg;
*cpp_undef_tail = cpp_arg;
cpp_undef_tail = &(*cpp_undef_tail)->next;
cpp_argc++;
}
void
add_cpp_def (const char *arg)
{
@ -117,7 +153,6 @@ static void
build_cpp_args (const char *in_name, const char *out_name)
{
cpp_arg_t *cpp_arg;
cpp_arg_t *cpp_def;
const char **arg;
if (cpp_argv)
@ -126,9 +161,12 @@ build_cpp_args (const char *in_name, const char *out_name)
for (arg = cpp_argv, cpp_arg = cpp_arg_list;
cpp_arg;
cpp_arg = cpp_arg->next) {
if (!strcmp (cpp_arg->arg, "%d")) {
for (cpp_def = cpp_def_list; cpp_def; cpp_def = cpp_def->next)
*arg++ = cpp_def->arg;
if (!strcmp (cpp_arg->arg, "%u")) {
arg = append_cpp_args (arg, cpp_undef_list);
} else if (!strcmp (cpp_arg->arg, "%s")) {
arg = append_cpp_args (arg, cpp_sysinc_list);
} else if (!strcmp (cpp_arg->arg, "%d")) {
arg = append_cpp_args (arg, cpp_def_list);
} else if (!strcmp (cpp_arg->arg, "%i")) {
*arg++ = in_name;
} else if (!strcmp (cpp_arg->arg, "%o")) {

View file

@ -299,6 +299,8 @@ DecodeArgs (int argc, char **argv)
int c;
int saw_E = 0, saw_MD = 0;
add_cpp_undef ("-undef");
add_cpp_undef ("-nostdinc");
add_cpp_def ("-D__QFCC__=1");
add_cpp_def ("-D__QUAKEC__=1");
@ -720,7 +722,8 @@ DecodeArgs (int argc, char **argv)
// add the default paths
if (!options.no_default_paths) {
add_cpp_def (nva ("-I%s", QFCC_INCLUDE_PATH));
add_cpp_sysinc ("-isystem");
add_cpp_sysinc (QFCC_INCLUDE_PATH);
linker_add_path (QFCC_LIB_PATH);
}