* system.h: Include "safe-ctype.h" instead of <safe-ctype.h>. Include <signal.h>, <sys/mman.h>, <sys/resource.h> and <sys/times.h>. (O_BINARY, SIGCHLD, MAP_FAILED, MAP_ANONYMOUS, kill): Conditionally define. (GET_ENVIRONMENT): Poison. * configure.ac: Don't test for mincore. * configure: Regenerate. * config.in: Regenerate. * collect2-aix.c: Don't include <sys/mman.h>. * collect2.c: Don't include <signal.h>. (SIGCHLD): Don't define. (prefix_from_env): Use getenv instead of GET_ENVIRONMENT. * config/alpha/alpha.c: Include "splay-tree.h" instead of <splay-tree.h>. * config/arm/arm.c (arm_target_help): Use getenv instead of GET_ENVIRONMENT. * config/avr/driver-avr.c: Don't include <stdlib.h>. * config/frv/frv.c: Don't include <ctype.h>. * config/host-darwin.c: Don't include <sys/mman.h>. * config/host-hpux.c: Don't include <sys/mman.h> or <unistd.h>. (MAP_FAILED): Don't define. * config/host-linux.c: Don't include <sys/mman.h> or <limits.h>. * config/host-solaris.c: Don't include <sys/mman.h>. * config/i386/cygming.h: Don't include <stdio.h>. * config/i386/driver-i386.c: Don't include <stdlib.h>. * config/i386/host-cygwin.c: Don't include <sys/mman.h>. * config/iq2000/iq2000.c: Don't include <signal.h>. * config/m32c/m32c-pragma.c: Don't include <stdio.h>. * config/m68hc11/m68hc11.c: Don't include <stdio.h>. * config/mep/mep-pragma.c: Don't include <stdio.h>. * config/microblaze/microblaze.c: Don't include <signal.h>. * config/mips/mips.c: Don't include <signal.h>. * config/rs6000/host-darwin.c: Don't include <signal.h>. * cppdefault.c (cpp_relocated): Use getenv instead of GET_ENVIRONMENT. * defaults.h (GET_ENVIRONMENT): Don't define. * et-forest.h: Don't include <ansidecl.h> or <stddef.h>. * gcc.c: Don't include <signal.h>, <sys/mman.h> or <sys/types.h>. (SIGCHLD, MAP_FAILED, kill): Don't define. (process_command): Use getenv instead of GET_ENVIRONMENT. * genhooks.c: Don't include <string.h>. * ggc-common.c: Don't include <sys/resource.h>, <sys/mman.h> or <sys/types.h>. (MAP_FAILED): Don't define. * ggc-page.c Don't include <sys/mman.h>. (MAP_ANONYMOUS, MAP_FAILED): Don't define. * ggc-zone.c: Don't include <sys/mman.h>. (MAP_ANONYMOUS, MAP_FAILED): Don't define. * graph.c: Include "config.h" instead of <config.h>. * incpath.c (add_env_var_paths): Use getenv instead of GET_ENVIRONMENT. * lto-wrapper.c: Don't include <errno.h>, <signal.h> or "libiberty.h". (SIGCHLD, kill): Don't define. * mips-tfile.c: Don't include <signal.h>. * opts.c: Don't include <signal.h> or <sys/resource.h>. (print_specific_help): Use getenv instead of GET_ENVIRONMENT. * passes.c: Don't include <signal.h>, <sys/resource.h> or <sys/times.h>. * sparseset.h: Don't include <assert.h>. * timevar.c: Don't include <sys/times.h> or <sys/resource.h>. * tlink.c: Don't include "libiberty.h". * toplev.c: Don't include <signal.h> or <sys/times.h>. * tree-mudflap.c: Include "demangle.h" instead of <demangle.h>. * tree-switch-conversion.c: Don't include <signal.h>. * vmsdbgout.c: Don't include <errno.h> or <string.h>. c-family: * c-opts.c (check_deps_environment_vars): Use getenv instead of GET_ENVIRONMENT. * c-pch.c (O_BINARY): Don't define here. * c-pragma.h: Include "cpplib.h" instead of <cpplib.h>. fortran: * gfortran.h (alloca): Don't include definitions. (NULL): Don't define. java: * boehm.c: Include "config.h" instead of <config.h>. * builtins.c: Don't include <stdarg.h>. * class.c: Don't include "stdio.h". (O_BINARY): Don't define here. * jcf-depend.c: Don't include <assert.h>. (jcf_dependency_set_dep_file, jcf_dependency_init, jcf_dependency_write): Use gcc_assert. * jcf-io.c (O_BINARY): Don't define here. * jcf-path.c: Don't include "tm.h". (jcf_path_init): Use getenv instead of GET_ENVIRONMENT. * resource.c: Don't include "stdio.h". (O_BINARY): Don't define here. * verify-impl.c: Don't include <stdio.h>. lto: * lto-endian.h: Delete. * lto-object.c: Don't include "libiberty.h". (O_BINARY): Don't define. * lto.c: Don't include "libiberty.h" or <sys/mman.h>. (O_BINARY): Don't define. From-SVN: r167241
142 lines
3.3 KiB
C
142 lines
3.3 KiB
C
/* Functions for handling dependency tracking when reading .class files.
|
||
|
||
Copyright (C) 1998, 1999, 2000, 2001, 2003, 2006, 2007, 2010
|
||
Free Software Foundation, Inc.
|
||
|
||
This file is part of GCC.
|
||
|
||
GCC is free software; you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
the Free Software Foundation; either version 3, or (at your option)
|
||
any later version.
|
||
|
||
GCC is distributed in the hope that it will be useful,
|
||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
along with GCC; see the file COPYING3. If not see
|
||
<http://www.gnu.org/licenses/>.
|
||
|
||
Java and all Java-based marks are trademarks or registered trademarks
|
||
of Sun Microsystems, Inc. in the United States and other countries.
|
||
The Free Software Foundation is independent of Sun Microsystems, Inc. */
|
||
|
||
/* Written by Tom Tromey <tromey@cygnus.com>, October 1998. */
|
||
|
||
#include "config.h"
|
||
#include "system.h"
|
||
#include "coretypes.h"
|
||
#include "mkdeps.h"
|
||
|
||
#include "jcf.h"
|
||
|
||
|
||
|
||
/* The dependency structure used for this invocation. */
|
||
struct deps *dependencies;
|
||
|
||
/* The output file, or NULL if we aren't doing dependency tracking. */
|
||
static FILE *dep_out = NULL;
|
||
|
||
/* Nonzero if system files should be added. */
|
||
static int system_files;
|
||
|
||
/* Nonzero if we are dumping out dummy dependencies. */
|
||
static int print_dummies;
|
||
|
||
|
||
|
||
/* Call this to reset the dependency module. This is required if
|
||
multiple dependency files are being generated from a single tool
|
||
invocation. FIXME: we should change our API or just completely use
|
||
the one in mkdeps.h. */
|
||
void
|
||
jcf_dependency_reset (void)
|
||
{
|
||
if (dep_out != NULL)
|
||
{
|
||
if (dep_out != stdout)
|
||
fclose (dep_out);
|
||
dep_out = NULL;
|
||
}
|
||
|
||
if (dependencies != NULL)
|
||
{
|
||
deps_free (dependencies);
|
||
dependencies = NULL;
|
||
}
|
||
}
|
||
|
||
void
|
||
jcf_dependency_set_target (const char *name)
|
||
{
|
||
/* We just handle this the same as an `add_target'. */
|
||
if (dependencies != NULL && name != NULL)
|
||
deps_add_target (dependencies, name, 1);
|
||
}
|
||
|
||
void
|
||
jcf_dependency_add_target (const char *name)
|
||
{
|
||
if (dependencies != NULL)
|
||
deps_add_target (dependencies, name, 1);
|
||
}
|
||
|
||
void
|
||
jcf_dependency_set_dep_file (const char *name)
|
||
{
|
||
gcc_assert (dep_out != stdout);
|
||
if (dep_out)
|
||
fclose (dep_out);
|
||
if (! strcmp (name, "-"))
|
||
dep_out = stdout;
|
||
else
|
||
dep_out = fopen (name, "w");
|
||
}
|
||
|
||
void
|
||
jcf_dependency_add_file (const char *filename ATTRIBUTE_UNUSED, int system_p)
|
||
{
|
||
if (! dependencies)
|
||
return;
|
||
|
||
/* Just omit system files. */
|
||
if (system_p && ! system_files)
|
||
return;
|
||
|
||
|
||
/* FIXME: Don't emit any dependencies. In many cases we'll just see
|
||
temporary files emitted by ecj... */
|
||
/* deps_add_dep (dependencies, filename); */
|
||
}
|
||
|
||
void
|
||
jcf_dependency_init (int system_p)
|
||
{
|
||
gcc_assert (! dependencies);
|
||
system_files = system_p;
|
||
dependencies = deps_init ();
|
||
}
|
||
|
||
void
|
||
jcf_dependency_print_dummies (void)
|
||
{
|
||
print_dummies = 1;
|
||
}
|
||
|
||
void
|
||
jcf_dependency_write (void)
|
||
{
|
||
if (! dep_out)
|
||
return;
|
||
|
||
gcc_assert (dependencies);
|
||
|
||
deps_write (dependencies, dep_out, 72);
|
||
if (print_dummies)
|
||
deps_phony_targets (dependencies, dep_out);
|
||
fflush (dep_out);
|
||
}
|